Come posso cambiare gli spazi in caratteri di sottolineatura e minuscoli tutti?
Domanda
Ho un file di testo che contiene:
Cycle code
Cycle month
Cycle year
Event type ID
Event ID
Network start time
Voglio cambiare questo testo in modo che ogni volta che c'è uno spazio, voglio sostituirlo con un _
. E dopo, voglio che i personaggi scrivano lettere minuscole come di seguito:
cycle_code
cycle_month
cycle_year
event_type_id
event_id
network_start_time
Come ho potuto farlo?
Soluzione
Esaminando ulteriormente la documentazione di sed e seguendo i consigli dei commenti dovrebbe funzionare il seguente comando.
sed -r {filehere} -e 's/[A-Z]/\L&/g;s/ /_/g' -i
Altri suggerimenti
Un altro metodo Perl:
perl -pe 'y/A-Z /a-z_/' file
tr
funziona da solo:
tr ' [:upper:]' '_[:lower:]' < file
C'è anche un tag perl
nella tua domanda. Quindi:
#!/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
o
perl -i.bak -wple '$_ = join('_', split ' ', lc)' test.txt
sed "y/ABCDEFGHIJKLMNOPQRSTUVWXYZ /abcdefghijklmnopqrstuvwxyz_/" filename
Usa la tua shell, se hai Bash 4
while read -r line
do
line=${line,,} #change to lowercase
echo ${line// /_}
done < "file" > newfile
mv newfile file
Con gawk :
awk '{$0=tolower($0);$1=$1}1' OFS="_" file
Con Perl:
perl -ne 's/ +/_/g;print lc' file
Con Python:
>>> f=open("file")
>>> for line in f:
... print '_'.join(line.split()).lower()
>>> f.close()
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow