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