是否有Unix命令将一些字符串数据添加到文本文件中?
类似:
prepend "to be prepended" text.txt
sed -i.old '1s;^;to be prepended;' inFile
-i
将更改原位写入,并在有扩展名的情况下进行备份。 (在这种情况下,.old
)1s;^;to be prepended;
将给定的替换字符串替换为第一行的开头,并使用;
作为命令定界符。printf '0i\n%s\n.\nwq\n' prepend-text | ed file
printf '%s\n%s\n' "to be prepended" "$(cat text.txt)" >text.txt
我很惊讶没有人提到这个。
cat <(echo "before") text.txt > newfile.txt
可以说比接受的答案更自然(打印某些内容并将其通过管道传递到替换命令中,按字典顺序是违反直觉的。]
...并劫持了瑞安在上面所说的内容,使用sponge
,您不需要临时文件:
sudo apt-get install moreutils
<<(echo "to be prepended") < text.txt | sponge text.txt
编辑:看来这在Bourne Shell /bin/sh
中不起作用>
使用此处字符串-<<<
,您可以这样做:
<<< "to be prepended" < text.txt | sponge text.txt
这是一种可能性:
这将形成输出。 -表示标准输入,通过回显通过管道提供。
更喜欢亚当的answer
可能没有内置的东西,但是您可以像这样很容易地编写自己的东西:
在某些情况下,前置文本仅可从stdin获得。然后,此组合才能起作用。
如果可以接受[[替换