如何在文件的开头插入文本?
到目前为止,我已经能够find如何在文件的开头添加一行,但这不完全是我想要的。 我会用一个例子来展示它
文件内容
some text at the beginning
结果
<added text> some text at the beginning
这是相似的,但我不想创build任何新的线路…
如果可能,我想用sed
来做。
sed
可以在一个地址上运行:
$ sed -i '1s/^/<added text> /' file
在这里的每一个答案你看到这个神奇的1s
是什么? 线寻址! 。
想要在前10行添加<added text>
?
$ sed -i '1,10s/^/<added text> /' file
或者你可以使用Command Grouping
:
$ { echo -n '<added text> '; cat file; } >file.new $ mv file{.new,}
如果该文件只有一行,则可以使用:
sed 's/^/insert this /' oldfile > newfile
如果它不止一行。 之一:
sed '1s/^/insert this /' oldfile > newfile sed '1,1s/^/insert this /' oldfile > newfile
我已经包括了后者,所以你知道如何做线的范围。 这两个都会将其受影响的行上的起始行标记replace为要插入的文本。 你也可以(假设你的sed
足够现代)使用:
sed -i 'whatever command you choose' filename
做就地编辑。
如果要在文件的开始处添加一行,则需要在上面最佳解决scheme的string末尾添加\n
。
最好的解决scheme将添加string,但与string,它不会在文件的末尾添加一行。
sed -i '1s/^/your text\n/' file
你可以使用cat -
printf '%s' "some text at the beginning" | cat - filename
只插入换行符:
sed '1i\\'
请注意,在OS X上, sed -i <pattern> file
失败。 但是,如果您提供了一个备份扩展, sed -i old <pattern> file
,则在创buildfile.old
同时file
被修改。 然后,您可以删除脚本中的file.old
。
嗨与回车:
sed -i '1s/^/your text\n/' file
echo -n "text to insert " ;tac filename.txt| tac > newfilename.txt
第一个tac
将文件倒退(最后一行),所以最后出现“要插入的文本”。 第二个tac
再次包装它,所以插入的行在开始和原始文件是在它的原始顺序。
问题:使用父目录的基本名称在文件的顶部标记一个文件。
解决scheme1 – 非空文件:
bn=${PWD##*/} ## bn: basename sed -i '1s/^/'"$bn"'\n/' <filename>
解决scheme2a – 空文件:
## sed fails on empty files; solution: printf "${PWD##*/}\n" >> <filename>
解决scheme2b – recursion目录:
for file in *; do printf "${PWD##*/}\n" >> $file; done
要点: https : //gist.github.com/victoriastuart/7457b2727d21a37b7a79eb9a957b988d
要将一行添加到文件的顶部,请执行以下操作:
sed -i '1iText to add\'