sed - 替换所有以
sed - replace all strings that begin with
您好,我想查找文件中以字母 rs
开头的所有字符串,即
rs12345 100
rs54321 200
300 rs13579
并删除所有以条件开头的字符串,以便我得到:
100
200
300
即将字符串替换为空。我不会为最终输出之前的前导空格而烦恼,因为我稍后会处理它。我试过 sed 's/rs*//g'
但是这给出了:
12345 100
54321 200
即仅删除 rs
.
如何编辑我的 sed 命令以删除整个字符串?谢谢
您可以将 rs
到 space 替换为空字符串,以便删除 rsXXX
。
sed 's/^rs[^ ]*//' file
这假设您的 rs
位于行首。如果 rs
可以出现在文件中的任何位置,请使用:
sed 's/\brs[^ ]*//' file
\b
用作单词边界,因此 hellorshello
之类的内容不匹配。
测试
$ cat a
rs12345 100
rs54321 200
hellooo 300
$ sed 's/^rs[^ ]*//' a
100
200
hellooo 300
注意我不是在处理白色space,因为你提到你稍后会处理它。如果你需要它,你可以说 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
请注意,您当前的方法无效,因为 rs*
您说的是:r
后跟 0 个或多个 s
。
让 word 成为以分词符 \b
开始并具有字符 \w
(并且也以 \b
结尾的模式,但是我们不需要它)。
删除以 rs 开头的单词的命令将是 sed -r 's/\brs\w+//g' file
$ cat file
rs12345 100
rs54321 200
ars1234 000
$ sed -r 's/\brs\w+//g' file
100
200
ars1234 000
您好,我想查找文件中以字母 rs
开头的所有字符串,即
rs12345 100
rs54321 200
300 rs13579
并删除所有以条件开头的字符串,以便我得到:
100
200
300
即将字符串替换为空。我不会为最终输出之前的前导空格而烦恼,因为我稍后会处理它。我试过 sed 's/rs*//g'
但是这给出了:
12345 100
54321 200
即仅删除 rs
.
如何编辑我的 sed 命令以删除整个字符串?谢谢
您可以将 rs
到 space 替换为空字符串,以便删除 rsXXX
。
sed 's/^rs[^ ]*//' file
这假设您的 rs
位于行首。如果 rs
可以出现在文件中的任何位置,请使用:
sed 's/\brs[^ ]*//' file
\b
用作单词边界,因此 hellorshello
之类的内容不匹配。
测试
$ cat a
rs12345 100
rs54321 200
hellooo 300
$ sed 's/^rs[^ ]*//' a
100
200
hellooo 300
注意我不是在处理白色space,因为你提到你稍后会处理它。如果你需要它,你可以说 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
请注意,您当前的方法无效,因为 rs*
您说的是:r
后跟 0 个或多个 s
。
让 word 成为以分词符 \b
开始并具有字符 \w
(并且也以 \b
结尾的模式,但是我们不需要它)。
删除以 rs 开头的单词的命令将是 sed -r 's/\brs\w+//g' file
$ cat file
rs12345 100
rs54321 200
ars1234 000
$ sed -r 's/\brs\w+//g' file
100
200
ars1234 000