Sed要注释掉一些文件

时间:2014-04-23 10:12:06

标签: bash shell text sed

我有一个包含内核配置变量的文件。 我想评论最后130行。

我知道sed执行内联替换,如何将此命令与tail结合使用以注释掉最后130个字符。

提前致谢。

tail -n 130 <file-name> | sed -i ... #I am clueless beyond this point

4 个答案:

答案 0 :(得分:5)

从第130行更改为结束尝试:

sed '130,$s/^/#/'

这会在第130行的开头添加#以结束。

更改最后130行:

tac file | sed '1,130s/^/#/'  | tac

答案 1 :(得分:3)

以下是使用awk

注释掉最后130行的方法
awk '{a[NR]=$0} END {for (i=1;i<=NR;i++) {if (i>NR-130) a[i]="#"a[i];print a[i]}}' file

这是另一个较短的awk

awk 'FNR==NR {a=NR;next} FNR>a-130 {$0="#"$0}1' file{,}

file{,}file file

相同

答案 2 :(得分:1)

由于我无法在طاهر回复中添加评论,我必须自己创作。

您的回答会记录从第130行到结束的所有内容。 不是问题从最后的130行,而不是直到结束的130行?

如果是在脚本中,那么使用

FROM=$(wc -l < file)
(( FROM = FROM - 130 ))

然后

sed $FROM',$s/^/#/' < file

会起作用。

答案 3 :(得分:0)

这可能适合你(GNU sed):

sed -i ':a;${s/^/#/Mg;b};N;s/\n/&/130;Ta;P;D' file1 file2 file...