【发布时间】:2014-10-01 09:01:23
【问题描述】:
这是我当前的命令:
sed 's/\./-/' file.txt > CLEANED.txt
我想要做的是用破折号替换我文件中的所有句点。有些行有多个句点,我需要将它们全部替换为破折号 - 但上面的命令似乎只是替换了每行中的第一个。
不替换所有句点我做错了什么?
【问题讨论】:
标签: perl shell command-line command
这是我当前的命令:
sed 's/\./-/' file.txt > CLEANED.txt
我想要做的是用破折号替换我文件中的所有句点。有些行有多个句点,我需要将它们全部替换为破折号 - 但上面的命令似乎只是替换了每行中的第一个。
不替换所有句点我做错了什么?
【问题讨论】:
标签: perl shell command-line command
添加/g 进行全局替换,否则仅影响第一次出现。
像这样:
sed 's/\./-/g' file.txt > CLEANED.txt
【讨论】:
在 perl 中,只需将 /g modifier 添加到您的正则表达式中:
perl -pe 's/\./-/g' file.txt > CLEANED.txt
开关:
-p:为输入文件中的每个“行”创建一个 while(<>){...; print} 循环。 -e:告诉perl 在命令行上执行代码。 代码:
s/\./-/g:用破折号替换所有句点。也可以使用transliteration operator:y/./-/
【讨论】: