如何使用 awk 显示文本文件中的重复项
How to display duplicates from a text file using awk
我正在尝试了解如何使用 "awk" 命令,以便显示在文件 (txt) 中多次出现的单词。另外,如何显示this/thosefile/s的名字?
ex: 第一句第一个文件。
第二句后跟第二个词。
这应该显示:"first" 和 "second"
我假设 -i
你的意思是比较/计数应该忽略大小写。
如果我正确理解您的要求,这样的命令应该有效:
awk '{ for( i=1; i<=NF; i++){ cnt[ tolower( $i ) ]++; if (cnt[$i] > 1) {print $i} } }' yourfile | sort -u
它会为您的示例打印这些词:
- 第一
- 秒
- 一句话
如果您需要区分大小写的计数,只需删除 tolower
。
对于文件中的每一行,脚本遍历每个单词(for( i=1 i <= NF; i++)
循环):
- 每个单词增加一个计数器(
cnt[ tolower( $i) ]++
)
- 如果计数大于 1,则字为打印机
- 通向
sort -u
的管道对输出进行排序并从输出中删除重复项。
我正在尝试了解如何使用 "awk" 命令,以便显示在文件 (txt) 中多次出现的单词。另外,如何显示this/thosefile/s的名字?
ex: 第一句第一个文件。 第二句后跟第二个词。
这应该显示:"first" 和 "second"
我假设 -i
你的意思是比较/计数应该忽略大小写。
如果我正确理解您的要求,这样的命令应该有效:
awk '{ for( i=1; i<=NF; i++){ cnt[ tolower( $i ) ]++; if (cnt[$i] > 1) {print $i} } }' yourfile | sort -u
它会为您的示例打印这些词:
- 第一
- 秒
- 一句话
如果您需要区分大小写的计数,只需删除 tolower
。
对于文件中的每一行,脚本遍历每个单词(for( i=1 i <= NF; i++)
循环):
- 每个单词增加一个计数器(
cnt[ tolower( $i) ]++
) - 如果计数大于 1,则字为打印机
- 通向
sort -u
的管道对输出进行排序并从输出中删除重复项。