以下命令会将模式添加到第四行。
sed -i '4i pattern' file
但如果文件中的内容少于四行,它就不起作用。要求是我需要在第四行添加带有空前缀行的模式。
预期结果:cat -n file
1 line1
2
3
4 pattern
GNU sed 版本 4.2.1
答案1
您可以用几个空行填充文件以确保至少有 4 行:
{ cat file; echo; echo; echo; } | sed -e '4i pattern'
如果您想随后修剪尾随空白行,则可以将其通过管道传输到:
| sed -n 'H; ${g; s/^\n//; s/\n\+$//; p}'
或者
| tac | awk '/./{p=1}p' | tac
或者仅添加最少数量的空行:
{ cat file; for ((i=$(wc -l <file); i<3; i++)); do echo; done; } | sed '3a pattern'
请注意,sed 程序已更改为在第 3 行之后追加,而不是在第 4 行之前插入。
答案2
检查是否file
有足够的行wc -l
(计数行)。
如果文件没有足够的行,则显示警告。
[ $(cat file | wc -l) -ge 4 ] && sed -i '4s pattern' file || echo "not enough lines"