我是 sed 的新手,总是在输入文件上执行一个命令,最近我尝试使用"-e"
要处理多个命令,但我无法弄清楚它是如何工作的,默认打印非常烦人,所以我无法弄清楚命令的执行顺序。
sed -e 'command 1' -e 'command 2' input.txt
input.txt的内容:
line1
line2
line3
问题1: 处理流程是怎样的?是吗
command1 processes line1 and then command2 processes new-line1(processed by cmd1)
command1 processes line2 and then command2 processes new-line2(processed by cmd1)
command1 processes line3 and then command2 processes new-line3(processed by cmd1)
or
command1 processes line1
command1 processes line2
command1 processes line3
command2 processes new-line1(already processed by cmd1)
command2 processes new-line2(already processed by cmd1)
command2 processes new-line3(already processed by cmd1)
问题2:正如我提到的,默认打印非常烦人,我应该在第一个 -e 前面使用 -n 还是在两个 -e 前面使用?
提前致谢。
编辑(看来工作流程是第一个假设):
input.txt
1
2
3
sed -e '{s/1/ONE/;s/2/TWO/;/3/q}' -e '{s/ONE/THREE/}' numbers.txt
THREE
TWO
3
我尝试了上面的命令,看起来工作流程是command1处理line1,然后command2处理new-line1(cmd1处理它),然后cmd1处理下一行
sed -e 命令组合起来创建一个 sed 脚本。以下产生相同的结果(请注意 -e 是隐含的):
sed '
s/1/ONE/
s/2/TWO/
/3/q
s/ONE/THREE/
' input.txt
或者作为单行:
sed 's/1/ONE/; s/2/TWO/; /3/q; s/ONE/THREE/' input.txt
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)