我正在寻找一种sed或awk解决方案,它会在模式的第一次匹配后将字符串插入文件中的现有行。例如,我需要这个:
command arg arg2 -o another string and another string and so on
看起来像这样:
command "new string here" arg arg2 another string and another string and so on
如果我们匹配“命令”,它只需要匹配第一次出现的“命令”。
我不想使用整行sed替代解决方案,因为实际行很长。 (并且我需要修改多行。)我遇到了无数的解决方案,使用sed或awk在文件中追加新行或将字符串附加到行的结尾或开头但尚未找到解决方案插入到我需要在这里做的线的中间。
答案 0 :(得分:2)
你可以用awk实现它:
awk '$1 ~ /command/ { s = ""; for (i = 2; i <= NF; i++) s = s $i " "; print $1 " " "new string here" " " s }'
答案 1 :(得分:1)
sed版本:
sed -n 's/^\(command\)\(.*\)/\1 "new string here"\2/p'