我想编写一个带有我的文件的bash脚本:
READ_ME.MD
two
three
four
并使其成为
READ_ME.MD
one
two
three
four
有很多类似的StackOverflow问题,但我尝试了他们的答案但没有成功。
这些是我尝试过的失败的bash脚本:
test.sh
sed '1s/^/one/' READ_ME.md > READ_ME.md
结果:清除文件的内容
test.sh
sed '1,1s/^/insert this /' READ_ME.md > READ_ME.md
结果:清除文件的内容
test.sh
sed -i '1s/^/one\n/' READ_ME.md
结果:sed:1:“READ_ME.md”:无效的命令代码R
任何帮助都将不胜感激。
答案 0 :(得分:1)
您可以使用此BSD sed
命令:
sed -i '' '1i\
one
' file
-i
会将内联更改保存到file
。
如果您想在顶部添加一行,如果相同的行不在那里,请使用BSD sed
命令:
line='one'
sed -i '' '1{/'"$line"'/!i\
'"$line"'
}' file
答案 1 :(得分:1)
您的最后一个示例适用于GNU sed。根据您添加的错误消息,我猜您是否正在使用Mac系统?根据{{3}},在sed
的Mac版本上可能需要后缀参数:
sed -i ' ' '1s/^one\n/' READ_ME.md
答案 2 :(得分:0)
如果这是bash或zsh,你可以使用像这样的进程替换。
% cat x
one
two
three
% cat <(echo "zero") x
zero
one
two
three
将其重定向到临时文件并将其复制回原始文件
答案 3 :(得分:0)
始终有ed
printf '%s\n' H 1i "one" . w | ed -s READ_ME.MD