不同的选择 - 获得重复的行或不
问题描述:
我想找到在linux下一个文件中的文本和替换另一个文本这个文本。例如通过B101011939
不同的选择 - 获得重复的行或不
取代B101011938
如果我使用COMMAND1(C1),有重复的线路中的输出:
$ cat file
line1:B101011938
$ sed 's/B101011938/B101011939/p' file
line1:B101011939
line1:B101011939
如果我使用命令2(C2)时,不存在重复的行:
$ cat file
line1:B101011938
$ sed 's/B101011938/B101011939/g' file
line1:B101011939
我的问题是:这些命令之间有什么区别?
答
在sed
替换命令具有以下签名:
s/REGEX/replacement/flags
继POSIX,标志的值应是零或多个:
Ñ替换为第n次出现只在模式空间内发现的BRE。
g全局替代BRE的所有非重叠实例,而不仅仅是第一个实例。如果同时指定了g和n,则结果未指定。
p写模式空间标准输出,如果进行了替换,。
W¯¯ wfile写。如果进行了替换,则将模式空间追加到wfile。一致性应用程序应在wfile参数之前加上一个或多个空格。如果W标志是不是在多个标志值的串联给出的最后一个标志值,结果是不确定的。
这意味着,当p
标志处于使用sed
将输出模式空间(当前行,通过s
修改)。由于sed
将已经输出默认模式空间 - 除非-n
命令行选项是在使用中 - 这将导致具有在输出两次被修改线。