我正在寻找一种使用 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