Regex从文本中删除出现的单词,但每个单词之间只留一个空格
这是我经常遇到的一个问题。我有一个文本文件,其中包含单词,每个单词之间有一个空格,行首或行尾没有空格。我想使用sed来删除出现的单词,每个单词之间只留一个空格,行首或行尾没有空格。对于一个正则表达式,这可能吗 我能想到的最好的解决方案是,需要三个正则表达式Regex从文本中删除出现的单词,但每个单词之间只留一个空格,regex,unix,sed,Regex,Unix,Sed,这是我经常遇到的一个问题。我有一个文本文件,其中包含单词,每个单词之间有一个空格,行首或行尾没有空格。我想使用sed来删除出现的单词,每个单词之间只留一个空格,行首或行尾没有空格。对于一个正则表达式,这可能吗 我能想到的最好的解决方案是,需要三个正则表达式 % cat text A B C A B C A % sed -r 's/ ?\bA\b ?/ /g' text B C B C % sed -r 's/ ?\bA\b ?/ /g' text | sed 's/^ *//' | se
% cat text
A B C A B C A
% sed -r 's/ ?\bA\b ?/ /g' text
B C B C
% sed -r 's/ ?\bA\b ?/ /g' text | sed 's/^ *//' | sed 's/ *$//'
B C B C
您可以使用此
awk
awk '{gsub(/\<A\>/,"");$1=$1}1' file
B C B C
它将只修改其中包含A
的行
编辑:
使用单词边界更新,因此不会删除部分单词。您可以使用此
awk
awk '{gsub(/\<A\>/,"");$1=$1}1' file
B C B C
它将只修改其中包含A
的行
编辑:
使用单词边界更新,因此不会删除部分单词。使用sed:
AMD$ sed -r 's/\bA | A$//g' File
B C B C
在这里,我们用空格删除
A
。我们介绍了两种可能性(a.a
在开头或中间的任何位置,b.a
在结尾)。使用sed:
AMD$ sed -r 's/\bA | A$//g' File
B C B C
在这里,我们用空格删除
A
。我们讨论了这两种可能性(a.a
在开头或中间的任何位置,b.a
在结尾)。这将从单词末尾删除a
。此A BA C ARC B C A
应成为BA C ARC B C
,而不是BC ARC B C
不,它不会。。。请看A前面的空格(因此只有最后一个单词A)。它会将BA C
更改为BC
-Op喜欢删除单词,我想不是单词的一部分。是的。。我正要提到…编辑了答案。。谢天谢地,只有一个问题:如果文件只包含一个应该删除的单词,此正则表达式将不会删除它。这将从单词末尾删除A
。此A BA C ARC B C A
应成为BA C ARC B C
,而不是BC ARC B C
不,它不会。。。请看A前面的空格(因此只有最后一个单词A)。它会将BA C
更改为BC
-Op喜欢删除单词,我想不是单词的一部分。是的。。我正要提到…编辑了答案。。谢谢,只有一个问题:如果文件只包含一个单词,即应该删除的单词,则此正则表达式不会删除它。我喜欢这两个答案,但选择此选项是因为它要求我只键入一次单词。我喜欢这两个答案,但选择此选项是因为它要求我只键入一次单词。