dot*_*hen 18 linux text-editing bash sed command-line
这是以下内容的手册页条目-n:
-n
抑制模式空间的自动打印
我注意到,当不使用-n对某些操作,每行被打印到标准输出(和所请求的线被印刷两次):
$ cat test.txt
first
second
third
fourth
fifth
$ sed -n '2,3p' test.txt
second
third
$ sed '2,3p' test.txt
first
second
second
third
third
fourth
fifth
Run Code Online (Sandbox Code Playgroud)
但是,该定律不适用于其他命令:
$ sed -n 's/t/T/' test.txt
$ sed 's/t/T/' test.txt
firsT
second
Third
fourTh
fifTh
Run Code Online (Sandbox Code Playgroud)
那么究竟有什么作用-n呢?
Gor*_*son 22
通常,sed 处理每一行(进行替换等),然后打印结果。如果处理涉及正在打印的行(例如 sed 的p命令),那么它会被打印两次(一次是在处理过程中,一次是通过自动后处理打印)。该-n选项禁用自动打印,这意味着您没有明确告诉它打印的行不会被打印,而您明确告诉它打印的行(例如 with p)只会打印一次。
sed -n '2,3p' test.txt - 根据要求仅打印第 2 行到第 3 行
sed '2,3p' test.txt - 打印每一行(自动),并且还第二次打印第 2-3 行
sed -n 's/t/T/' test.txt - 在每一行用“T”替换“t”,但不打印结果,因为 -n
sed 's/t/T/' test.txt - 在每一行用“T”替换“t”,并自动打印结果
让我再补充一些例子:
sed -n 's/t/T/p' test.txt - 在每一行用“T”替换“t”,只打印发生替换的行(即不是“第二个”)
sed 's/t/T/p' test.txt - 在每一行用“T”替换“t”,打印发生替换的行,然后自动打印每一行(结果:“second”打印一次,所有其他打印两次)
sed '2,3p; 3p' test.txt- 打印第 1、4 和 5 行一次(自动打印);第 2 行两次(第一个p命令然后自动打印),第 3 行三次(每个p命令一次,然后自动再次)。
| 归档时间: |
|
| 查看次数: |
30575 次 |
| 最近记录: |