Bash 如何查找文件中最常用的字符串
我有一个关于bash脚本的问题,假设有一个包含行的文件,每行都有一个文件的路径和一个日期,问题是如何找到最频繁的路径Bash 如何查找文件中最常用的字符串,bash,Bash,我有一个关于bash脚本的问题,假设有一个包含行的文件,每行都有一个文件的路径和一个日期,问题是如何找到最频繁的路径 提前感谢。将行反转,剪下行号(日期),再次反转,然后对唯一行进行排序和计数: cat file.txt | rev | cut-b22 | rev | sort | uniq-c 如果您完全确定路径中不会出现空白,则可以完全避免rev: cat file.txt | cut-d”“-f1 | sort | uniq-c 如果输出太长,无法进行目视检查,aioobe建议使用sort
提前感谢。将行反转,剪下行号(日期),再次反转,然后对唯一行进行排序和计数:
cat file.txt | rev | cut-b22 | rev | sort | uniq-c
如果您完全确定路径中不会出现空白,则可以完全避免rev
:
cat file.txt | cut-d”“-f1 | sort | uniq-c
如果输出太长,无法进行目视检查,aioobe建议使用sort-rn | head-n1
来执行此操作,这将很好地为您服务
值得注意的是,正如aioobe所提到的,许多unix命令都可以选择使用文件参数。通过使用它,可以避免在开始时使用额外的
cat
命令,方法是将其参数提供给下一个命令:
cat file.txt | rev |…
vsrev file.txt |…
虽然我个人认为第一个选项更容易记忆和理解,但许多(大多数?)人更喜欢第二个选项,因为它节省了系统资源(特别是额外进程使用的内存和引用),并且在某些特定用例中具有更好的性能。详细讨论此问题。将行反转,剪切行号(日期),再次反转,然后对唯一行进行排序和计数:
cat file.txt | rev | cut-b22 | rev | sort | uniq-c
如果您完全确定路径中不会出现空白,则可以完全避免rev
:
cat file.txt | cut-d”“-f1 | sort | uniq-c
如果输出太长,无法进行目视检查,aioobe建议使用sort-rn | head-n1
来执行此操作,这将很好地为您服务
值得注意的是,正如aioobe所提到的,许多unix命令都可以选择使用文件参数。通过使用它,可以避免在开始时使用额外的
cat
命令,方法是将其参数提供给下一个命令:
cat file.txt | rev |…
vsrev file.txt |…
虽然我个人认为第一个选项更容易记忆和理解,但许多(大多数?)人更喜欢第二个选项,因为它节省了系统资源(特别是额外进程使用的内存和引用),并且在某些特定用例中具有更好的性能。详细讨论此问题。将行反转,剪切行号(日期),再次反转,然后对唯一行进行排序和计数:
cat file.txt | rev | cut-b22 | rev | sort | uniq-c
如果您完全确定路径中不会出现空白,则可以完全避免rev
:
cat file.txt | cut-d”“-f1 | sort | uniq-c
如果输出太长,无法进行目视检查,aioobe建议使用sort-rn | head-n1
来执行此操作,这将很好地为您服务
值得注意的是,正如aioobe所提到的,许多unix命令都可以选择使用文件参数。通过使用它,可以避免在开始时使用额外的
cat
命令,方法是将其参数提供给下一个命令:
cat file.txt | rev |…
vsrev file.txt |…
虽然我个人认为第一个选项更容易记忆和理解,但许多(大多数?)人更喜欢第二个选项,因为它节省了系统资源(特别是额外进程使用的内存和引用),并且在某些特定用例中具有更好的性能。详细讨论此问题。将行反转,剪切行号(日期),再次反转,然后对唯一行进行排序和计数:
cat file.txt | rev | cut-b22 | rev | sort | uniq-c
如果您完全确定路径中不会出现空白,则可以完全避免rev
:
cat file.txt | cut-d”“-f1 | sort | uniq-c
如果输出太长,无法进行目视检查,aioobe建议使用sort-rn | head-n1
来执行此操作,这将很好地为您服务
值得注意的是,正如aioobe所提到的,许多unix命令都可以选择使用文件参数。通过使用它,可以避免在开始时使用额外的
cat
命令,方法是将其参数提供给下一个命令:
cat file.txt | rev |…
vsrev file.txt |…
虽然我个人认为第一个选项更容易记忆和理解,但许多(大多数?)人更喜欢第二个选项,因为它节省了系统资源(特别是额外进程使用的内存和引用),并且在某些特定用例中具有更好的性能。详细讨论这一点。这里有一个建议
$ cut -d' ' -f1 file.txt | sort | uniq -c | sort -rn | head -n1
# \_____________________/ \__/ \_____/ \______/ \_______/
# select the file column sort print sort on print top
# files counts count result
示例用法:
$ cat file.txt
/home/admin/fileA jan:17:13:46:27:2015
/home/admin/fileB jan:17:13:46:27:2015
/home/admin/fileC jan:17:13:46:27:2015
/home/admin/fileA jan:17:13:46:27:2015
/home/admin/fileA jan:17:13:46:27:2015
$ cut -d' ' -f1 file.txt | sort | uniq -c | sort -rn | head -n1
3 /home/admin/fileA
您可以通过另一个cut
从最终结果中删除3
,这里有一个建议
$ cut -d' ' -f1 file.txt | sort | uniq -c | sort -rn | head -n1
# \_____________________/ \__/ \_____/ \______/ \_______/
# select the file column sort print sort on print top
# files counts count result
示例用法:
$ cat file.txt
/home/admin/fileA jan:17:13:46:27:2015
/home/admin/fileB jan:17:13:46:27:2015
/home/admin/fileC jan:17:13:46:27:2015
/home/admin/fileA jan:17:13:46:27:2015
/home/admin/fileA jan:17:13:46:27:2015
$ cut -d' ' -f1 file.txt | sort | uniq -c | sort -rn | head -n1
3 /home/admin/fileA
您可以通过另一个cut
从最终结果中删除3
,这里有一个建议
$ cut -d' ' -f1 file.txt | sort | uniq -c | sort -rn | head -n1
# \_____________________/ \__/ \_____/ \______/ \_______/
# select the file column sort print sort on print top
# files counts count result
示例用法:
$ cat file.txt
/home/admin/fileA jan:17:13:46:27:2015
/home/admin/fileB jan:17:13:46:27:2015
/home/admin/fileC jan:17:13:46:27:2015
/home/admin/fileA jan:17:13:46:27:2015
/home/admin/fileA jan:17:13:46:27:2015
$ cut -d' ' -f1 file.txt | sort | uniq -c | sort -rn | head -n1
3 /home/admin/fileA
您可以通过另一个cut
从最终结果中删除3
,这里有一个建议
$ cut -d' ' -f1 file.txt | sort | uniq -c | sort -rn | head -n1
# \_____________________/ \__/ \_____/ \______/ \_______/
# select the file column sort print sort on print top
# files counts count result
示例用法:
$ cat file.txt
/home/admin/fileA jan:17:13:46:27:2015
/home/admin/fileB jan:17:13:46:27:2015
/home/admin/fileC jan:17:13:46:27:2015
/home/admin/fileA jan:17:13:46:27:2015
/home/admin/fileA jan:17:13:46:27:2015
$ cut -d' ' -f1 file.txt | sort | uniq -c | sort -rn | head -n1
3 /home/admin/fileA
您可以通过另一个
cut
从最终结果中去掉3
您可以给出一个示例行吗?/home/admin/file jan:17:13:46:27:2015您可以给出一个示例行吗?/home/admin/file jan:17:13:46:27:2015您可以给出一个示例行吗?/home/admin/file简:17:13:46:27:2015不必要地使用猫?@aioobe绝对。我个人的观点是,在记住哪些命令接受文件参数,哪些不接受文件参数,以及以什么顺序执行,或者执行所需的时间方面,操作系统上附加进程占用的内存比我内存占用的空间要便宜