【发布时间】:2021-04-27 06:58:15
【问题描述】:
我正在尝试使用 sed 为文件中不以多个单词之一开头的所有行添加前缀。
例子:
someText
sleep 1
anotherString
sleep 1
for i in {1..50}
do
command
sleep 1
secondCommand
sleep 1
done
应该变成
PREFIX_someText
sleep 1
PREFIX_anotherString
sleep 1
for i in {1..50}
do
PREFIX_command
sleep 1
PREFIX_secondCommand
sleep 1
done
我能够排除以单个模式词开头的任何行(即:sleep、for、do、done),但我不知道如何排除以多个模式之一开头的所有行。 目前我使用以下命令:
sed -i '/^sleep/! s/^/PREFIX_/'
这在从睡眠开始的所有行上都可以正常工作。 我想有一些方法可以组合模式词,但我似乎找不到解决方案。 像这样的东西(显然不起作用):
sed -i '/[^sleep;^for;^do]/! s/^/PREFIX_/'
任何帮助将不胜感激。
【问题讨论】: