删除特定单词后的所有空格

删除特定单词后的所有空格

我正在尝试使用正则表达式来删除特定单词后的所有空格。我使用的编辑器是 Notepad++ 但可以使用 Unix

在这种情况下,我可以通过运行正则表达式 \VALUES 来突出显示 VALUES,但我不确定如何删除此后的空格。

答案1

使用sed

$ sed 's/VALUES[[:blank:]]*/VALUES/g' input >output

这会将VALUES后面的任意数量的空白字符(空格或制表符)替换为VALUES,即它将删除空白。

如果重要的是VALUES作为一个完整的单词进行匹配,whateverVALUES不是匹配,然后在之前插入一个(开头)单词边界模式VALUES

$ sed 's/[[:<:]]VALUES[[:blank:]]*/VALUES/g' input >output

我将在本答案的其余部分中保留这一点。

对于更复杂的 值VALUES,不必键入两次可能会很方便:

$ sed 's/\(VALUES\)[[:blank:]]*/\1/g' input >output

这将保存VALUES模式并在替换中重复使用它。

如果模式VALUES存储在 shell 变量中$values

$ sed "s/\($values\)[[:blank:]]*/\1/g" input >output

这或多或少直接转移到 Vim 编辑器中:

:%s/\(VALUES\)[[:blank:]]*/\1/

由于我从未使用过Notepad++,所以我只能猜测如何使用它。显然应该能够按Ctrl+H并输入搜索/查找和替换模式。

搜索模式可能(VALUES)[[:blank:]]*替换模式时可能$1。我没有办法测试这个,抱歉。如果[[:blank:]]不起作用,请尝试使用[\t ].

答案2

您可以使用\s*(GNU) 或[[:space:]]*(portable) 来捕获制表符(以及所有其他水平和垂直间距字符)以及空格。

$ cat file
stuff and VALUES    <--tab
more VALUES   <--three spaces
VALUES      <--tab, three spaces, tab

$ sed 's/VALUES\s*/VALUES/' file
stuff and VALUES<--tab
more VALUES<--three spaces
VALUES<--tab, three spaces, tab

答案3

使用sed

sed -e 's/VALUES \+/VALUES/'

用于+匹配后面的所有空格VALUES

答案4

在 Notepad++ 中调出查找和替换窗口

在查找框中,输入(VALUES)\s*(这与“VALUES”后跟任意数量的空格匹配)在替换框中,输入\1(这将插入第一个组(括号内()

确保正则表达式已启用

单击“全部替换”以将“VALUES[一些空格]”的所有实例替换为“VALUES”

相关内容