linux – Bash:在模式之后,将一个文件的内容插入另一个文件

linux – Bash:在模式之后,将一个文件的内容插入另一个文件,第1张

概述我正在尝试写一个bash脚本,它将执行以下 *** 作: >从第一个文件读取内容(作为第一个参数) >从第二个文件读取内容(作为第二个参数) >使用给定模式找到第二个文件中的行(作为第三个参数) >将文本从第一个文件插入到第二个文件的模式行之后. >在屏幕上打印最终文件. 例如: first_file.txt: 1111111111111 second_file.txt: 12222122222 我正在尝试写一个bash脚本,它将执行以下 *** 作:

>从第一个文件读取内容(作为第一个参数)
>从第二个文件读取内容(作为第二个参数)
>使用给定模式找到第二个文件中的行(作为第三个参数)
>将文本从第一个文件插入到第二个文件的模式行之后.
>在屏幕上打印最终文件.

例如:

first_file.txt:

1111111111111

second_file.txt:

1222212222222

模式:

2222

输出:

122221111111111111122221111111111111222

在BASH上实现此功能应该怎么用?

我写的代码,但它不能正常工作(为什么?):

#!/bin/bash    first_filename=""    second_filename=""    pattern=""    while read -r line    do    if [[ $line=˜$pattern ]]; then            while read -r line2            do                    echo $line2            done < $second_filename    fi    echo $line    done < $first_filename
解决方法 你需要在=〜 *** 作符周围的空格.比较:
[[ foo=~bar ]][[ foo =~ bar ]]

这是因为第一个表达式基本上评估为“这个字符串是否为空?

此外,OP代码使用small tilde而不是tilde.

即使如此,您也可以轻松摆脱内部循环.读取-r line2位与cat – “$second_filename”时,只需替换整个.

如果文件未以换行符(* nix工具标准)结尾,则最后一次echo $line是正确的.相反,您应该使用while -r行|| [[$line〜=”]].这可以使用或不带有换行符.

另外,Use More Quotes™.

总结

以上是内存溢出为你收集整理的linux – Bash:在模式之后,将一个文件的内容插入另一个文件全部内容,希望文章能够帮你解决linux – Bash:在模式之后,将一个文件的内容插入另一个文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1048276.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存