如何 grep bash 中字母乱序的字符串?
How to grep a string in bash with letters out of order?
我有一个任务要做,就是找到一些在特定文本文件中重复的字符串(首字母缩略词)。
下面是一个示例:
...
the
the
het
het
het
teh
teh
teh
teh
...
在第一步中,我可以用这个命令计算每个出现的次数:
cat text_file.txt | sort | uniq -c | sort -gr
输出是这样的:
2 the
3 het
4 teh
但我还需要 "count/sum" 这三个输出,因为它们使用相同的三个字符,但顺序不同。
你们能帮我解决这个问题吗?
在给定空 FS 和 sorted_in:
的情况下,使用 GNU awk 将字符串拆分为字符
$ cat tst.awk
{
split([=10=],chars,"")
PROCINFO["sorted_in"] = "@val_str_asc"
key = ""
for (i in chars) {
key = key chars[i]
}
cnt[key]++
}
END {
PROCINFO["sorted_in"] = "@ind_str_asc"
for (key in cnt) {
print key, cnt[key]
}
}
$ cat file
the
het
teh
foobar
fobar
oofrab
$ awk -f tst.awk file
abfoor 2
abfor 1
eht 3
我有一个任务要做,就是找到一些在特定文本文件中重复的字符串(首字母缩略词)。
下面是一个示例:
...
the
the
het
het
het
teh
teh
teh
teh
...
在第一步中,我可以用这个命令计算每个出现的次数:
cat text_file.txt | sort | uniq -c | sort -gr
输出是这样的:
2 the
3 het
4 teh
但我还需要 "count/sum" 这三个输出,因为它们使用相同的三个字符,但顺序不同。
你们能帮我解决这个问题吗?
在给定空 FS 和 sorted_in:
的情况下,使用 GNU awk 将字符串拆分为字符$ cat tst.awk
{
split([=10=],chars,"")
PROCINFO["sorted_in"] = "@val_str_asc"
key = ""
for (i in chars) {
key = key chars[i]
}
cnt[key]++
}
END {
PROCINFO["sorted_in"] = "@ind_str_asc"
for (key in cnt) {
print key, cnt[key]
}
}
$ cat file
the
het
teh
foobar
fobar
oofrab
$ awk -f tst.awk file
abfoor 2
abfor 1
eht 3