>从第一个文件读取内容(作为第一个参数)
>从第二个文件读取内容(作为第二个参数)
>使用给定模式找到第二个文件中的行(作为第三个参数)
>将文本从第一个文件插入到第二个文件的模式行之后.
>在屏幕上打印最终文件.
例如:
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:在模式之后,将一个文件的内容插入另一个文件所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)