linux - AWK 查找两个模式并打印以作为命令执行

标签 linux sed awk

我有一个命令:./start.sh版本

我有一个指定版本的文件 1.txt

some_pattern=something
some_pattern=something
Fix_Version=install_v.1
some_pattern=something
some_pattern=something

还有另一个文件 install.sh 来执行命令,但我希望该文件捕获版本并执行命令。

somecommands
somecommands
(./start.sh version)
somecommands
somecommands

所以,结果应该是这样的:./start.sh install_v.1并执行它。从两个文件中读取,仅在 install.sh 中搜索 ./start.sh,并在 1.txt 中查找版本并执行命令 ./start.sh install_v.1

最佳答案

使用这个awk:

awk -F '[ =]+' 'FNR==NR && $1=="Fix_Version"{ver=$2;next} FNR!=NR{if ($1~/start\.sh/) $0 = $1 " " ver ")"; print $0}' a.txt install.sh
somecommands
somecommands
(./start.sh install_v.1)
somecommands
somecommands

关于linux - AWK 查找两个模式并打印以作为命令执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18561302/

相关文章:

regex - 下一个单词的 GREP 跟随包含变量的字符串

Awk - 每个匹配行的不同 FS

bash - 使用 awk 提取特定模式(如果它与上一行匹配)

linux - 在匹配模式之前打印单词

regex - 提取文件名到第一个破折号

linux - 如何计算空格分隔文件中行中数字的总和?

c++ - 在 c/c++ 中使用函数 system() 调用管道传输到 where 的 gdb,以记录堆栈跟踪 - 在 fd 0 上检测到错误挂断

Linux 页面缓存状态

linux - 在 AWS Code Commit 中使用用户名和密码进行 Git pull/克隆

bash - 从文件 B 中删除文件 A 中的所有匹配项