linux – Bash:在模式之后,将一个文件的内容插入另一个文件
发布时间:2020-05-23 05:59:29 所属栏目:Linux 来源:互联网
导读:我正在尝试写一个bash脚本,它将执行以下操作: 从第一个文件读取内容(作为第一个参数) 从第二个文件读取内容(作为第二个参数) 使用给定模式找到第二个文件中的行(作为第三个参数) 将文本从第一个文件插入到第二个文件的模式行之后. 在屏幕上打印最终文件. 例
|
我正在尝试写一个bash脚本,它将执行以下操作: >从第一个文件读取内容(作为第一个参数) 例如: first_file.txt: 111111 1111 11 1 second_file.txt: 122221 2222 22 2 模式: 2222 输出: 122221 111111 1111 11 1 2222 111111 1111 11 1 22 2 在BASH上实现此功能应该怎么用? 我写的代码,但它不能正常工作(为什么?): #!/bin/bash
first_filename="$1"
second_filename="$2"
pattern="$3"
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. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
