如果文件有 (nx) 行,则将模式添加到第 n 行

如果文件有 (nx) 行,则将模式添加到第 n 行

以下命令会将模式添加到第四行。

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"

相关内容