如何在开头为bash shell中的另一个文件插入一个文件[复制]

问题描述 投票:0回答:3

这个问题在这里已有答案:

我正在编写一个脚本:最终目标是通过从一些文件中获取内容并修改一些文件来创建一个文本文件。我有一个fileA有一些恒定的内容(20行)和fileB,它是通过修改另一个文件创建的。现在我必须在fileA开头插入来自fileB的所有信息。

你能帮我一下吗?

linux bash shell
3个回答
0
投票

cat命令按原样读取和打印文件内容。使用>>(追加模式)将其输出重定向到另一个文件。对下一个文件重复相同的操作

cat fileA >> fileC
cat fileB >> fileC

-1
投票
Try this... cat - fileB < fileA > tmp; mv tmp fileB

Example:

$ cat a.sh 
line 1
line 2
line 3

$ cat b.sh 
line a
line b
line c

$ cat - b.sh < a.sh > tmp.sh

$ cat tmp.sh 
line 1
line 2
line 3
line a
line b
line c

$ mv tmp.sh b.sh

$ cat b.sh 
line 1
line 2
line 3
line a
line b
line c

-1
投票
f=$(mktemp); (head -n 20 fileA ; cat fileB ) > $f; mv $f fileB

你不能直接写到fileB,因为

cat fileA fileB > fileB

会在阅读之前立即销毁文件以供写作。 head -n 20过于古老,如果可以断言,文件A要么总是要有20行,要么更多行无关紧要。

mktemp不会覆盖现有文件,因此这是一种非常安全的方法。

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