sed -i "1s/^/<?php /" file
如何使用sed在每个文件的末尾插入内容?
#1 楼
最简单的方法是:sed -i -e '$aTEXTTOEND' filename
如何工作
$
匹配最后一行(这是正常的sed
地址; 4aTEXTTOEND
将在第四行之后插入),a
是append命令,TEXTTOEND
是要添加的内容,filename
是将在其中插入TEXTTOEND
的文件评论
在Makefile中将$转义为$$。
–stevesliva
2014年12月3日,下午1:22
对于OS X sed -e'$ a \ NEWLINE \\'。用实际的新行替换NEWLINE。
–乔治·布卡拉(Jorge Bucaran)
15-10-18在15:47
该命令不支持新文件。 (零字节)
– zw963
16年11月11日在15:07
不适用于macOS。甚至Jorge Bucaran都没有评论:sed:1:“ $ a \ NEWLINE \\”:命令结尾\后面的多余字符
– Emanuele Paolini
18年8月15日在16:02
在debian 9中,它添加了新行,而不是在最后一行的末尾添加。
–卢西亚诺·安德列斯·马蒂尼(Luciano Andress Martini)
18-09-18在13:29
#2 楼
在这种情况下,无需使用sed
。 echo "<?php" >> file
怎么样
评论
的确如此,但是您可以猜测OP的用例是将文件括在“
– dmckee ---前主持人小猫
09年9月6日15:12
另外,如果您这样做并且不想换行,请使用echo -n
– Vinko Vrsalovic
2009年9月6日15:15
我不喜欢猜测。每次尝试,我都是错的。
– innaM
2009年9月6日15:38
可接受的答案更有用的另一个原因是在sudo之前加上它,这导致此变化失败,因为echo是内置的shell命令,而不是$ PATH中的可执行文件。
–托尼·切萨罗(Tony Cesaro)
14-10-28在15:33
@TonyCesaro:echo是内置的,但也是在$ PATH中找到的可执行文件
–赞·山猫
16-12-28 at 12:51
#3 楼
假设您想将结尾的php标记放入文件中,那么sed -i '$s/$/\n?>/' file
应该可以解决问题
评论
在需要对输入的最后一行进行任意操作的情况下,此方法效果很好。谢谢!
–杰伊·泰勒(Jay Taylor)
15年7月1日在23:17
对命令的分解解释将不胜感激
– GGhe
19年8月1日在21:57
#4 楼
使用sed'append(a)'命令。例如,在文件末尾添加两行:sed -i -e '$a\
foo1 bar1\
foo2 bar2' file
#5 楼
有关多合一sed命令的信息,请参见原始文章。find . -type f -exec sed -i -e "1s/^/<?php /" -e "$s/$/ ?>/" {} \;
#6 楼
以一种简单的方式来写和更改文件中特定行的内容。如果要在特定行号插入任何内容,则可以使用以下命令:
sed -i '2i i have started' sheikh.log
其中
2i
-行号2和i代表插入。如果必须在最后一行插入,请使用$
代替2。我已经开始-要插入文本,并且
sheikh.log
是文件名。我们也可以在通过使用以下命令在行中
sed -i '2c we have started' sheikh.log
i
更改为we
。#7 楼
与sed -i '1s/^/<start</' file
等效的是:sed -i '$s/$/>end>/' file
这会将文本
>end>
添加到文件的最后一行(没有换行符)。当然,在这种情况下(也与您的示例相同),该文件需要至少包含一行(不为空)。这样,shell就会尝试处理字符串中的每个$
。该命令将转换为:使用a
(添加,结束)或i
(插入,开始)还将插入换行符,并要求在BSD和GNU中进行不同的调用并且仍然需要一个非空文件。对于GNU:
sed -i "$s/$/>end>/" file
对于BSD:
$ sed '1i<start<' file
$ sed '$a>end>' file
或者,在允许使用C字符串的外壳中: br />
$ sed '1i\
<start<' file
$ sed '$a\
>end>' file
也适用于空文件。
#8 楼
第一个和最后一个我假设任何搜索如何在文件的开头/结尾插入/添加文本的人可能也需要知道如何做另一个。
cal | \
gsed -E \
-e '1i\{' \
-e '1i\ "lines": [' \
-e 's/(.*)/ "",/' \
-e '$s/,$//' \
-e '$a\ ]' \
-e '$a\}'
说明
这是带有扩展RegEx(
cal
)和6“的sed
输出管道到gnu- gsed
(在通过brew.sh安装的macOS上称为-E
)脚本”(-e
)并使用\
换行以提高可读性。脚本1和2使用1i\
来“在第1行插入”。脚本5和6使用$a\
来“在输出
{
"lines": [
" October 2019 ",
"Su Mo Tu We Th Fr Sa ",
" 1 2 3 4 5 ",
" 6 7 8 9 10 11 12 ",
"13 14 15 16 17 18 19 ",
"20 21 22 23 24 25 26 ",
"27 28 29 30 31 ",
" "
]
}
评论
尽管我还没有对您的问题进行表决,但是请注意,我们已经有几个答案,其中包括一个被接受的答案,可以证明预期的结果。
– Jeff Schaller♦
19-10-22在12:12
@JeffSchaller Stack Exchange社区不是论坛。其目的不仅限于帮助OP畅通无阻。目标是为全球知识库提供许多选择,供搜索者在寻找答案时可以偶然发现。我将答案命名为“答案”的原因是为了帮助用户甚至在单击Google结果之前就可以识别该答案的实用程序。
–布鲁诺·布鲁诺斯基(Bruno Bronosky)
19-10-22在16:09
#9 楼
如果没有行/回车,请在行末添加文本hello
并在不输出到终端的情况下就地编辑文件sed -i '$s/$/hello/' file
评论
这与Vinko Vrsalovic的答案相同...
–斯蒂芬·基特(Stephen Kitt)
20年1月21日在21:55
评论
{cat file;回显“文件末尾”; }> newFile,也可以通过sh。*使用。 (不是sed,但工作简单)一个简单的echo“ Cool Text” >>文件也可以解决问题。
stackoverflow.com/a/30219386/385273