使用sed脚本生成awk脚本

时间:2018-08-19 07:34:46

标签: bash awk sed

我正在寻找一种使用sed生成awk文件的方法。当前的问题是,我有一个包含约1000行单词的文本文件,并且希望能够从文本文件中提取每一行,并将提取的单词用作awk文件中的正则表达式。

例如,文本文件将显示为:

James    Class1
Toby     Class3
Callum   Class4
Sarah    Class1
Jeremiah Class2

使用sed输出到awk应该看起来像

/ reg exp for James/ {action matching word has Class1}
/ reg exp for Toby / {action matching word has Class3}
/ reg exp for Callum / {action matching word has Class4}
/ reg exp for Sarah / {action matching word has Class1}

我尝试使用sed提取所有单词,但似乎找不到找到将其写入awk文件的方法!

1 个答案:

答案 0 :(得分:1)

看看这个GNU awk(由于多维数组语法(如GNU awk所述,仅在@EdMorton中起作用):

awk '{ a[$2][$1]++ }
END {
    for(i in a) {
        sum=0
        printf "=== %s ===\n", i
        for(j in a[i]) {
            sum+=a[i][j]
            printf "%s: %d\n", j, a[i][j]
        }
        printf "> %d\n", sum
    }  
}' data

示例:

$ cat data
Sarah    Class1
James    Class2
Sarah    Class1
Sarah    Class2
Peter    Class1
$ ./script
=== Class1 ===
Sarah: 2
Peter: 1
> 3
=== Class2 ===
James: 1
Sarah: 1
> 2