BASH将文本/行添加到文件中
时间:2020-01-09 10:37:24 来源:igfitidea点击:
我可以使用>>运算符将文本追加到文件中,但是如何在文件前加上文本呢?
我想要相反的操作>>。
如何在文本文件中添加一些数据?
我们如何在Linux下的Bash中将文本添加到文件的开头?
bash或任何其他shell上没有前置运算符,但是有很多方法可以做到这一点。
您可以使用ed,sed,perl,awk等在Linux或类Unix系统下将文本添加到Bash中文件的开头。
Bash使用临时文件在文本前添加
这是使用临时文件添加文本的简单解决方案:
echo 'line 1' > /tmp/newfile echo 'line 2' >> /tmp/newfile cat yourfile >> /tmp/newfile cp /tmp/newfile yourfile
这是一种解决方案:
echo "text"|cat - yourfile > /tmp/out && mv /tmp/out yourfile echo "theitroad"|cat - yourfile > /tmp/out && mv /tmp/out yourfile
在Linux和Unix下将文本或行添加到文件之前
使用仅bash解决方案将文本添加到文件开头
无需创建临时文件。
语法为:
echo -e "DATA-Line-1\n$(cat input)" > input cat input
要添加多行:
echo -e "DATA-Line-1\nDATA-Line-2\n$(cat input)" > input cat input
例如,使用bash将文本添加到名为input的文本文件的开头,如下所示:
cat input echo -e "Famous Quotes\n$(cat input)" > input
使用sed命令将数据添加到文本文件之前
使用sed命令时,以下语法将A文本或行添加到文件前:
sed '1s;^;DATA-Line-1\n;' input > output ## GNU/sed syntax ## sed -i '1s;^;DATA-Line-1\n;' input ## Verify it using the cat ## cat input
这是一个示例输入文件:
$ cat input.txt This is a test file. I love Unix.
接下来添加两行(确保添加" \ n"):
$ sed -i '1s;^;Force-1\nForce-2\n;' input.txt $ cat input.txt Force-1 Force-2 This is a test file. I love Unix.
如何在文件的每一行开头添加字符串?
awk命令语法为:
awk '{print "Line-1"$ cat output.txt}' file ## add a new line for each matched line ## awk '{print "~~~~~~~~\n"sed -i -e 's/^/Line-1/' file}' quotes.txt > output.txt
使用[nicmd name = cat]或grep命令/egrep命令显示结果:
$ cat data.txt Maybe I'm crazy Maybe you're crazy Maybe we're crazy Probably
sed语法为:
$ sed -i -e 's/^/DATA-Here/' data.txt $ cat data.txt DATA-HereMaybe I'm crazy DATA-HereMaybe you're crazy DATA-HereMaybe we're crazy DATA-HereProbably
例子
这是我们的示例文件:
##代码##如下使用sed或awk:
##代码##