这个问题在这里已有答案:
我正在编写一个脚本:最终目标是通过从一些文件中获取内容并修改一些文件来创建一个文本文件。我有一个fileA
有一些恒定的内容(20行)和fileB
,它是通过修改另一个文件创建的。现在我必须在fileA
开头插入来自fileB
的所有信息。
你能帮我一下吗?
cat
命令按原样读取和打印文件内容。使用>>
(追加模式)将其输出重定向到另一个文件。对下一个文件重复相同的操作
cat fileA >> fileC
cat fileB >> fileC
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
f=$(mktemp); (head -n 20 fileA ; cat fileB ) > $f; mv $f fileB
你不能直接写到fileB,因为
cat fileA fileB > fileB
会在阅读之前立即销毁文件以供写作。 head -n 20过于古老,如果可以断言,文件A要么总是要有20行,要么更多行无关紧要。
mktemp不会覆盖现有文件,因此这是一种非常安全的方法。