嗨,我想在文件中的任何地方找到所有以字母开头的字符串,rs即
rs12345 100
rs54321 200
300 rs13579
Run Code Online (Sandbox Code Playgroud)
并删除所有以条件开头的字符串,以便我得到:
100
200
300
Run Code Online (Sandbox Code Playgroud)
即用空替换字符串。我不担心在最终输出之前引导空格,因为我稍后会处理它。我已经尝试过,sed 's/rs*//g'但是这给出了:
12345 100
54321 200
Run Code Online (Sandbox Code Playgroud)
即只删除rs.
如何编辑我的 sed 命令以删除整个字符串?谢谢
您可以用rs空字符串替换从开始到空格,以便rsXXX删除。
sed 's/^rs[^ ]*//' file
Run Code Online (Sandbox Code Playgroud)
这假设你rs在行的开头。如果rs可以出现在文件中的任何位置,请使用:
sed 's/\brs[^ ]*//' file
Run Code Online (Sandbox Code Playgroud)
\b作为词边界的作品,所以像hellorshello不匹配的东西。
$ cat a
rs12345 100
rs54321 200
hellooo 300
$ sed 's/^rs[^ ]*//' a
100
200
hellooo 300
Run Code Online (Sandbox Code Playgroud)
注意我不是在处理空格,因为你提到你稍后会处理它。如果你需要它,你可以说sed 's/^rs[^ ]* \+//' file。
rs 任何地方:
$ cat a
rs12345 100
rs54321 200
hellooo 300
and rs12345 100
thisrsisatest 24
$ sed 's/\brs[^ ]*//' a
100
200
hellooo 300
and 100
thisrsisatest 24
Run Code Online (Sandbox Code Playgroud)
请注意,您当前的方法不起作用,因为rs*您在说:r后跟 0 或更多s。