【发布时间】:2019-12-10 07:31:34
【问题描述】:
我想获取一个文件的第一行,它没有用哈希注释掉,然后在该行之前添加一行文本就在该行之后。
我设法得到了行号:
sed -n '/^\s*#/!{=;q}' file // prints 2
以及插入文本(手动指定行):
sed '2 a extralinecontent' file
我不能让他们作为一个班轮或一批一起工作。
我尝试了命令替换(使用 $(command) 和反引号),但我从 bash 收到错误:
sed '$(sed -n '/^\s*#/!{=;q}' file) a extralinecontent' file
-bash: !{=: event not found
还尝试了许多其他组合,但没有运气。
我在 macOS 上使用 gnu-sed(通过 brew)。
【问题讨论】:
-
您能发布您使用
$()尝试过的确切命令吗?我猜你在双引号中使用了它,在这种情况下,!是特殊的会产生冲突......你可以试试这个:sed $(sed -n '/^\s*#/!{=;q}' file)' a foo' file其中$()和其余命令彼此相邻跨度> -
我贴出来了,这是最后一个代码块
标签: sed