Potřebuji napsat skript shellu pro převod znaků v souboru na malá písmena a nahradit znaky, které nejsou alfa, na _ .
Mám samostatný příkaz pro oba výše uvedené. Jak zadat soubor jako argument a provést výše uvedené věci, tj. výstup bude mít pouze malá písmena a znaky jiné než alfa budou nahrazeny _ (podtržítko)?
Přijatá odpověď:
Pomocí sed :
sed 's/[^[:alpha:]]/_/g; s/[[:upper:]]/\L&/g' file.txt
Toto jsou ve skutečnosti dva sed příkazy oddělené ; :
-
s/[^[:alpha:]]/_/gpřevede každý neabecední znak na_ -
s/[[:upper:]]/\L&/gpřevede všechna velká písmena na malá
Příklad:
$ cat file.txt
fooBAr132323
SpamEgg
$ sed 's/[^[:alpha:]]/_/g; s/[[:upper:]]/\L&/g' file.txt
foobar______
spamegg