我认为这个问题不言而喻.我是初学者,所以如果可能,请告诉我.如果没有,那么你给我一个更好的解决方案,因为我的bash脚本在很大程度上依赖于某些awk语句,但是大部分脚本都是bash.我在我的bash脚本中使用awk语句比较两个文件.基本上检查值是否相同. (见下面的文件)
FILE1.TXT
Name Col1 Col2 Col3
-----------------------
row1 1 4 7
row2 2 5 8
row3 3 6 9
FILE2.TXT
Name Col1 Col2 Col3
-----------------------
row1 1 4 7
row2 2 5 999
这是我的bash脚本的结构:
#!/bin/bash
.
.
.
awk -F '\t' '
# skips first two lines
FNR < 2 {next}
FNR == NR {
for (i = 2; i <= NF; i++) {
a[i,$1] = $i;
}
b[$1];
next;
}
($1 in b) {
for (i = 2; i <= NF; i++)
{
# does something
}
}
' file1.txt file2.txt
.
.
.
我有很多重复的代码只在awk语句中有用,所以我想创建一个放在awk语句中的函数以避免重复.这可能吗?
如果需要进一步说明,请与我们联系.
解决方法:
如果您询问如何在多个脚本中重用一段Awk代码而不将其保存在单独的文件中,则可以定义shell字符串并对其进行插值.
awkfn='function foo () { print "Hiya universe" }'
awk -F : "$awkfn"'BEGIN { foo() }'
注意你需要如何插入变量的双引号,但通常需要围绕Awk代码的单引号.我在一个单引号字符串旁边放了一个双引号字符串(它们之间没有空格)但是还有其他方法可以完成同样的事情.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。