SED:在最后一行之后插入文本吗?


76

命令将标记插入文件的开头:

sed -i "1s/^/<?php /" file

如何使用SED在每个文件的末尾插入内容?


3
{ cat file; echo 'END OF FILE'; } > newFile ,这也要感谢sh。*。(不是sed,但工作简单)

4
一个简单的方法echo "Cool Text" >> file也可以解决问题。
Danpe 2015年

Answers:


93

sed -e "\$aTEXTTOEND" 是最简单的方法。

这个怎么运作

$匹配最后一行(这是正常sed地址;4aTEXTTOEND将在第四行之后插入),a是append命令,并且TEXTTOEND是要追加的内容。


在Makefile中将$转义为$$。
stevesliva 2014年

对于OSX sed -e '$a\NEWLINE\\'。用实际的新行替换NEWLINE。
Jorge Bucaran 2015年

13
sed -i -e“ \ $ aTEXTTOEND” <文件名>将是完整命令。
Lasse Meyer

2
不适用于macOS。甚至Jorge Bucaran都没有评论:sed:1:“ $ a \ NEWLINE \\”:命令结尾处\后面的多余字符
Emanuele Paolini 18'Aug

1
在debian 9中,它添加了新行,而不是在最后一行的末尾添加。
Luciano Andress Martini

31

sed在这种情况下无需使用。怎么样

echo "<?php" >> file

2
的确如此,但是您可以猜测OP的用例是用“ <php ”和“ >” 将文件放在方括号中,并一次性引用所选内容,因此他可能确实想要一个sed片段。
dmckee

2
另外,如果您这样做并且不想换行,请使用echo -n
Vinko Vrsalovic

2
我不喜欢猜测。每次尝试,我都是错的。

4
接受的答案更有用的另一个原因是在此之前加上sudo,这会导致此变化失败,因为echo它是内置的shell命令,而不是在$PATH
Tony Cesaro中,2014年

@TonyCesaro:echo是内置的,但也是在发现了一个可执行文件$PATH
咱山猫



3

使用sed'append(a)'命令。例如,在文件末尾追加两行:

sed -i -e '$a\
foo1 bar1\
foo2 bar2' file

2

以一种简单的方式在文件的特定行上写入并更改内容。如果要在特定的行号处插入任何内容,则可以使用以下命令:

sed -i '2i i have started' sheikh.log

其中2i第2行和我代表插入。如果必须在最后一行插入,请使用$2代替。我已经开始-要插入的文本sheikh.log是文件名。

我们还可以使用以下命令在行中进行更改

sed -i '2c we have started' sheikh.log

i更改为we

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.