合并 2 个命令

pra*_*ddy 4 command-line text-processing

我需要编写一个 shell 脚本来将文件中的字符转换为小写并将非字母字符替换为_.

我对上述两个命令都有单独的命令。如何将文件作为参数并完成上述操作,即输出将只有小写字符,而非 alpha 将替换为_(下划线)?

hee*_*ayl 8

使用sed

sed 's/[^[:alpha:]]/_/g; s/[[:upper:]]/\L&/g' file.txt
Run Code Online (Sandbox Code Playgroud)

这实际上是两个sed由 分隔的命令;

  • s/[^[:alpha:]]/_/g 将每个非字母字符转换为 _

  • s/[[:upper:]]/\L&/g 将所有大写字符转换为小写

例子:

$ cat file.txt 
fooBAr132323
SpamEgg

$ sed 's/[^[:alpha:]]/_/g; s/[[:upper:]]/\L&/g' file.txt
foobar______
spamegg
Run Code Online (Sandbox Code Playgroud)