使用 sed 脚本生成 awk 脚本



我正在寻找一种使用 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 文件的方法!

看看这个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: %dn", j, a[i][j]
}
printf "> %dn", 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

最新更新