Как я могу изменить пробелы на подчеркивание и строчные буквы все? - PullRequest
0 голосов
/ 27 ноября 2009

У меня есть текстовый файл, который содержит:

Cycle code
Cycle month
Cycle year
Event type ID
Event ID
Network start time

Я хочу изменить этот текст, чтобы при появлении пробела заменить его на _. И после этого я хочу, чтобы символы были заглавными, как показано ниже:

cycle_code
cycle_month
cycle_year
event_type_id
event_id
network_start_time

Как мне это сделать?

Ответы [ 6 ]

12 голосов
/ 27 ноября 2009

Другой метод Perl:

perl -pe 'y/A-Z /a-z_/' file
11 голосов
/ 27 ноября 2009

tr только работы:

tr ' [:upper:]' '_[:lower:]' < file
4 голосов
/ 27 ноября 2009

Еще раз изучив документацию sed и следуя советам из комментариев, следующая команда должна работать.

sed -r {filehere} -e 's/[A-Z]/\L&/g;s/ /_/g' -i
3 голосов
/ 27 ноября 2009

В вашем вопросе также есть тег perl. Итак:

#!/usr/bin/perl

use strict; use warnings;

while (<DATA>) {
    print join('_', split ' ', lc), "\n";
}
__DATA__
Cycle code
Cycle month
Cycle year
Event type ID
Event ID
Network start time

Или:

perl -i.bak -wple '$_ = join('_', split ' ', lc)' test.txt
1 голос
/ 27 ноября 2009
sed "y/ABCDEFGHIJKLMNOPQRSTUVWXYZ /abcdefghijklmnopqrstuvwxyz_/" filename
1 голос
/ 27 ноября 2009

Просто используйте вашу оболочку, если у вас есть Bash 4

while read -r line
do
    line=${line,,} #change to lowercase
    echo ${line// /_}
done < "file"  > newfile
mv newfile file

С gawk :

awk '{$0=tolower($0);$1=$1}1' OFS="_" file

С Perl:

perl -ne 's/ +/_/g;print lc' file

С Python:

>>> f=open("file")
>>> for line in f:
...   print '_'.join(line.split()).lower()
>>> f.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...