合并特定位置的两个文本文件,sed或awk

时间:2010-04-19 13:27:55

标签: bash sed awk

我有两个文本文件,我想将文本放在另一个文本中间,我做了一些研究并找到了有关添加单个字符串的信息:

我在名为STUFFGOESHERE的第二个文本文件中有评论,所以我试过了:

sed '/^STUFFGOESHERE/a file1.txt' file2.txt 

sed:1:“/ ^ STUFFGOESHERE / a long.txt”:命令a期望\后跟文本

所以我尝试了不同的东西,尝试根据给定的行放置文本的内容,但没有运气。

有什么想法吗?

4 个答案:

答案 0 :(得分:5)

这应该这样做:

sed '/STUFFGOESHERE/ r file1.txt' file2.txt

如果你想删除STUFFGOESHERE行:

sed -e '/STUFFGOESHERE/ r file1.txt' -e '/STUFFGOESHERE/d' file2.txt

如果你想修改file2:

sed -i -e...

(或者sed -i '' -e...,我正在使用GNU sed 4.1.5。)

答案 1 :(得分:2)

如果您可以使用ex或ed,请尝试

cat <<EOF | ex -e - file2.txt
/^STUFFGOESHERE/
.r file1.txt
w
q
EOF

相同的脚本适用于ed:

cat <<EOF | ed file2.txt
/^STUFFGOESHERE/
.r file1.txt
w
q
EOF

答案 2 :(得分:1)

awk '/STUFFGOESHERE/{while((getline line<"file1")>0){ print line};next}1' file2

答案 3 :(得分:1)

从Unix shell(bash,csh,zsh,等等):

: | perl -e '@c = join("", map {<>} 0..eof); print $c[0] =~ /STUFFGOESHERE/ ? $` . $c[1] . $'"'"' : $c[0]' file2.txt file1.txt > newfile2.txt