bash shell脚本中如何将新内容添加到文件前面

时间:2019-11-20 08:53:01  来源:igfitidea点击:

问题

在Linux中,我们可以使用>>运算符将文本追加到文件中,但是都是追加到文件末尾,如何将文本追加到文件的前面?

在Linux bash shell中如何将文本添加到文件的开头?

解决方案

bash或任何其他shell中,没有类似>>的运算符可以将内容追加到文件开头。
但是可以使用ed,sed,perl,awk等命令将文本添加到文件的开头。

使用临时文件进行处理

下面是使用临时文件添加文本的简单解决方案:

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

使用echo将文本添加到文件开头

无需创建临时文件。语法为:

echo -e "Line-1\n$(cat input)" > input
cat input

要添加多行:

echo -e "Line-1\nLine-2\n$(cat input)" > input
cat input

使用sed命令将文本添加文件前面

使用sed命令将文本添加到文件前面:

sed  '1s;^;Text1\n;' file > file

## GNU/sed 语法 ##
sed -i '1s;^;Text1\n;' file

shell脚本如何在文件的每一行开头添加字符串?

awk命令语法为:

awk '{print "Text1" 
sed -i -e 's/^/Text1/' file
}' file awk '{print Text1\n"
$ cat data.txt
line1
line2
line3
hello
}' file.txt > output.txt

使用sed语法为:

$ sed -i -e 's/^/Text1/' data.txt
$ cat data.txt
Text1line1
Text1line2
Text1line3
Text1hello

示例

##代码##

替换:

##代码##