我是 sed 的新手,总是在输入文件上执行一个命令,最近我尝试使用它"-e"来处理多个命令,但我无法弄清楚它是如何工作的,默认打印非常烦人,所以我无法弄清楚命令执行的顺序。
sed -e 'command 1' -e 'command 2' input.txt
Run Code Online (Sandbox Code Playgroud)
input.txt的内容:
line1
line2
line3
Run Code Online (Sandbox Code Playgroud)
问题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)
Run Code Online (Sandbox Code Playgroud)
或者
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)
Run Code Online (Sandbox Code Playgroud)
问题 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
Run Code Online (Sandbox Code Playgroud)
我尝试了上面的命令,看起来工作流程是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
Run Code Online (Sandbox Code Playgroud)
或者作为单行:
sed 's/1/ONE/; s/2/TWO/; /3/q; s/ONE/THREE/' input.txt
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3081 次 |
| 最近记录: |