将文本添加到文件的Unix命令

问题描述 投票:110回答:16

是否有Unix命令将一些字符串数据添加到文本文件中?

类似:

prepend "to be prepended" text.txt
unix command-line utilities prepend
16个回答
93
投票
sed -i.old '1s;^;to be prepended;' inFile
  • -i将更改原位写入,并在有扩展名的情况下进行备份。 (在这种情况下,.old
  • [1s;^;to be prepended;将给定的替换字符串替换为第一行的开头,并使用;作为命令定界符。

6
投票
解决方案:

3
投票

3
投票
[通过Bash(在Ubuntu中进行测试,如果通过以下方式从测试文件开始;

2
投票
另一个比较简单的解决方案是:

1
投票
如果您喜欢vi / vim,则可能更适合您。

0
投票
printf '0i\n%s\n.\nwq\n' prepend-text | ed file

0
投票
我建议定义一个函数,然后在需要的地方导入和使用它。

153
投票
printf '%s\n%s\n' "to be prepended" "$(cat text.txt)" >text.txt

33
投票

处理替代

我很惊讶没有人提到这个。

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中不起作用>


这里字符串(仅zsh)

使用此处字符串-<<<,您可以这样做:

<<< "to be prepended" < text.txt | sponge text.txt

27
投票

这是一种可能性:


17
投票

这将形成输出。 -表示标准输入,通过回显通过管道提供。


14
投票

更喜欢亚当的answer


7
投票

可能没有内置的东西,但是您可以像这样很容易地编写自己的东西:


7
投票

在某些情况下,前置文本仅可从stdin获得。然后,此组合才能起作用。


7
投票

如果可以接受[[替换

© www.soinside.com 2019 - 2024. All rights reserved.