Stack EG Asked: 2018-09-08 04:37:31 +0800 CST2018-09-08 04:37:31 +0800 CST 2018-09-08 04:37:31 +0800 CST 将模式添加到第 n 行,如果文件有 (nx) 行 [RHEL6] 772 以下命令会将模式添加到第四行。 sed -i '4i pattern' file 但如果我的文件中少于四行,它就不起作用。要求是我需要在第 4 行添加带有空前缀行的模式。 预期结果:cat -n file 1 line1 2 3 4 pattern GNU sed 版本 4.2.1 linux shell 2 个回答 Voted Best Answer glenn jackman 2018-09-08T05:14:18+08:002018-09-08T05:14:18+08:00 您可以用几个空行填充文件以确保至少有 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 行之前插入。 Michael D. 2018-09-08T04:41:12+08:002018-09-08T04:41:12+08:00 检查是否file有足够的行wc -l(计数行)。 如果文件行数不足,则显示警告。 [ $(cat file | wc -l) -ge 4 ] && sed -i '4s pattern' file || echo "not enough lines"
您可以用几个空行填充文件以确保至少有 4 行:
如果您想随后修剪尾随的空白行,则可以将其通过管道传输到:
或者
或者只添加最少数量的空行:
请注意,sed 程序更改为在第 3 行之后追加,而不是在第 4 行之前插入。
检查是否
file
有足够的行wc -l
(计数行)。如果文件行数不足,则显示警告。