98 sed
这个sed 命令在文件的开头插入一个标签:
sed -i "1s/^/<?php /" file
Run Code Online (Sandbox Code Playgroud)
如何使用 sed 在每个文件的末尾插入一些内容?
小智 131
最简单的方法是:
sed -i -e '$aTEXTTOEND'文件名
$匹配最后一行(它是一个普通sed地址;4aTEXTTOEND将在第四行之后插入),a是 append 命令,TEXTTOEND是要追加的内容,filename是TEXTTOEND将要插入的文件
小智 39
sed在这种情况下不需要使用。怎么样
echo "<?php" >> file
Run Code Online (Sandbox Code Playgroud)
Vin*_*vic 28
假设你想把结尾的 php 标签放到文件中,然后
sed -i '$s/$/\n?>/' file
Run Code Online (Sandbox Code Playgroud)
应该做的伎俩
小智 5
find . -type f -exec sed -i -e "1s/^/<?php /" -e "\$s/\$/ ?>/" {} \;
Run Code Online (Sandbox Code Playgroud)
小智 5
使用 sed 'append (a)' 命令。例如,要在文件末尾附加两行:
sed -i -e '$a\
foo1 bar1\
foo2 bar2' file
Run Code Online (Sandbox Code Playgroud)
小智 5
相当于你的sed -i '1s/^/<start</' file将是:
sed -i '$s/$/>end>/' file
Run Code Online (Sandbox Code Playgroud)
这会将文本添加>end>到文件的最后一行(不带换行符)。当然,在这种情况下(也如您的示例中所示),文件需要至少包含一行(非空)。
使用双引号(如所选答案中所示)并不是一个好主意,因为 shell 将尝试处理$字符串中的每个双引号。该命令将转换为:
sed -i "\$s/\$/>end>/" file
Run Code Online (Sandbox Code Playgroud)
使用a(append, end) 或i(insert, start) 也会插入换行符,在 BSD 和 GNU 中需要不同的调用,并且仍然需要一个非空文件。
对于 GNU:
$ sed '1i<start<' file
$ sed '$a>end>' file
Run Code Online (Sandbox Code Playgroud)
对于BSD:
$ sed '1i\
<start<' file
$ sed '$a\
>end>' file
Run Code Online (Sandbox Code Playgroud)
或者,在允许的 shell 中(C 字符串):
$ sed $'1i\\\n<start<' file
$ sed $'$a\\\n>end>' file
Run Code Online (Sandbox Code Playgroud)
当然,没有什么比以下更简单的了:
echo '>end>' >> file
Run Code Online (Sandbox Code Playgroud)
它也适用于空文件。