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

发布于 2024-08-29 18:17:39 字数 302 浏览 5 评论 0原文

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

我在第二个文本文件中有一条名为 STUFFGOESHERE 的注释,所以我尝试了:

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

sed: 1: "/^STUFFGOESHERE/a long.txt": 命令 a 需要 \ 后跟文本

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

有什么想法吗?

I have two text files, I want to place a text in the middle of another, I did some research and found information about adding single strings:

I have a comment in the second text file called STUFFGOESHERE, so I tried:

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

sed: 1: "/^STUFFGOESHERE/a long.txt": command a expects \ followed by text

So I tried something different, trying to place the contents of the text based on a given line, but no luck.

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

給妳壹絲溫柔 2024-09-05 18:17:39

这应该可以做到:

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。)

This should do it:

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

If you want to remove the STUFFGOESHERE line:

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

If you want to modify file2 in place:

sed -i -e...

(or maybe sed -i '' -e..., I'm using GNU sed 4.1.5.)

但可醉心 2024-09-05 18:17:39

如果您可以使用 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

If you can use ex or ed, try

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

The same script works for ed:

cat <<EOF | ed file2.txt
/^STUFFGOESHERE/
.r file1.txt
w
q
EOF
多孤肩上扛 2024-09-05 18:17:39
awk '/STUFFGOESHERE/{while((getline line<"file1")>0){ print line};next}1' file2
awk '/STUFFGOESHERE/{while((getline line<"file1")>0){ print line};next}1' file2
情魔剑神 2024-09-05 18:17:39

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

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

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

. $c[1] . "'"' : $c[0]' file2.txt file1.txt > newfile2.txt

From a Unix shell (bash, csh, zsh, whatever):

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

From a Unix shell (bash, csh, zsh, whatever):

. $c[1] . "'"' : $c[0]' file2.txt file1.txt > newfile2.txt
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文