Wie kann ich Leerzeichen in Unterstriche und Klein alles ändern?
Frage
Ich habe eine Textdatei, die enthält:
Cycle code
Cycle month
Cycle year
Event type ID
Event ID
Network start time
Ich möchte diesen Text ändern, so dass, wann immer es einen Raum, ich habe es mit einem _
ersetzen möchten. Und danach, ich möchte, dass die Zeichen Buchstaben senken wie unten:
cycle_code
cycle_month
cycle_year
event_type_id
event_id
network_start_time
Wie kann ich das erreichen?
Lösung
Ein Blick in sed Dokumentation einige mehr und folgende Ratschläge aus den Kommentaren sollten Sie den folgenden Befehl arbeiten.
sed -r {filehere} -e 's/[A-Z]/\L&/g;s/ /_/g' -i
Andere Tipps
Eine weitere Perl-Methode:
perl -pe 'y/A-Z /a-z_/' file
tr
allein Werke:
tr ' [:upper:]' '_[:lower:]' < file
Es gibt einen perl
-Tag als auch in Ihrer Frage. Also:
#!/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
Oder:
perl -i.bak -wple '$_ = join('_', split ' ', lc)' test.txt
sed "y/ABCDEFGHIJKLMNOPQRSTUVWXYZ /abcdefghijklmnopqrstuvwxyz_/" filename
Sie Ihre Shell verwenden, wenn Sie Bash 4
habenwhile read -r line
do
line=${line,,} #change to lowercase
echo ${line// /_}
done < "file" > newfile
mv newfile file
Mit gaffen :
awk '{$0=tolower($0);$1=$1}1' OFS="_" file
Mit Perl:
perl -ne 's/ +/_/g;print lc' file
Mit Python:
>>> f=open("file")
>>> for line in f:
... print '_'.join(line.split()).lower()
>>> f.close()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow