这是我的问题
我有一个文件1,我有一些数据
Var1.1 Var1.2 Var1.3
Var2.1 Var2.2 Var2.3
Var3.1 Var3.2 Var3.3
由于以上数据,我有一个我想编辑的文件2
File2(1)
***pattern with Var2.1***
some text...
文件2(2)
***pattern with Var2.1***
Here I want to add Var2.2 and Var2.3
some text
我的第一个解决方案是使用AWK,但我不知道要包含一个bash命令.AWK应该是这样的:
如果有更简单的话,请不要犹豫,向我解释其他可能性!
谢谢!
答案 0 :(得分:5)
这是我在awk中运行外部命令到base64-decode字符串的方法:
cmd = "/usr/bin/base64 -i -d <<< " $2 " 2>/dev/null"
while ( ( cmd | getline result ) > 0 ) { }
close(cmd)
split(result, a, "[:=,]")
name=a[2]
也许你可以从中获得灵感......
答案 1 :(得分:1)
无需运行外部脚本即可完成所需操作。它可以在一个简短的AWK脚本中完成。
awk 'FNR == NR {arr[$1] = $2 " " $3; next} {print; for (lookup in arr) {if ($0 ~ lookup) {split(arr[lookup], a); print "Here I want to add " a[1] " and " a[2]}}}' File1 File2
说明:
FNR == NR {arr[$1] = $2 " " $3; next}
- 遍历第一个文件并将所有值保存在第一列索引的数组中。记录号等于第一个文件的文件记录号。print
- 打印每个输入行。for (lookup in arr) {if ($0 ~ lookup) {
- 遍历每个数组索引并查看输入行是否匹配。split(arr[lookup], a)
- 将匹配索引中存储的值拆分为临时数组。print "Here I want to add " a[1] " and " a[2]
- 使用拆分产生的两个值打印一些文本。