在一个文本文件中,我想注释掉这些行:
<whatever>xyz
<whatever>xyz <whatever>
...这是一个特定的字符串,后跟行尾或空格。
但我想不理会这些行:
<whatever>xyz<something><whatever>
...那是字符串后跟一个不是空格的字符。
以下当然不是文字字符串:
- <whatever> 零个或多个可能是空格的字符。
- <something> 除了空白之外的任何东西。
我试过这个:
sed -e '/xyz[ $]/s/^/# /g' in.txt > out.txt
...但它与字符串后立即带有行尾的行不匹配。似乎 $ 符号在方括号内时被视为文字。
这是我目前的黑客:
sed -e '/xyz /s/^/# /g' in.txt > out.txt
sed -e '/xyz$/s/^/# /g' -i out.txt
...但由于速度原因,我宁愿只解析文件一次。我也想匹配 \t 以及普通的空格字符;但这不是强制性的。
对于这个输入文件,“in.txt”:
xyz
xyz #
xyz.
我正在运行 Linux Mint,即 gnu sed。