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:

##代码##