在本教程中,我们将向您展示如何使用多个命令,并使用 ls、egrep、wc 和 find 命令执行一些高级操作。 下面的命令将可用在多个方面。
10年积累的网站制作、网站建设经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先建设网站后付款的网站建设流程,更有柳河免费网站建设让你可以放心的选择与我们合作。
为了实验,我打算总共创建 7 个文件和 2 个文件夹(5 个常规文件和 2 个隐藏文件)。 下面的 tree 命令的输出清楚的展示了文件和文件夹列表。
# tree -a /opt
/opt
├──magi
│ └──2g
│ ├──test5.txt
│ └──.test6.txt
├──test1.txt
├──test2.txt
├──test3.txt
├──.test4.txt
└──test.txt
2directories,7files
示例 1
统计当前目录的文件(不包括隐藏文件)。 运行以下命令以确定当前目录中有多少个文件,并且不计算点文件(LCTT 译注:点文件即以“.” 开头的文件,它们在 Linux 默认是隐藏的)。
# ls -l . | egrep -c '^-'
4
细节:
ls : 列出目录内容
-l : 使用长列表格式
. : 列出有关文件的信息(默认为当前目录)
| : 将一个程序的输出发送到另一个程序进行进一步处理的控制操作符
egrep : 打印符合模式的行
-c : 通用输出控制
'^-' : 以“-”开头的行(ls -l 列出长列表时,行首的 “-” 代表普通文件)
示例 2
统计当前目录包含隐藏文件在内的文件。 包括当前目录中的点文件。
# ls -la . | egrep -c '^-'
5
示例 3
运行以下命令来计数当前目录的文件和文件夹。 它会计算所有的文件和目录。
# ls -l | wc -l
5
细节:
ls : 列出目录内容
-l : 使用长列表格式
| : 将一个程序的输出发送到另一个程序进行进一步处理的控制操作符
wc : 这是一个统计每个文件的换行符、单词和字节数的命令
-l : 输出换行符的数量
使用这个命令查出文本中的单词出现频率按照由高到底排序
cat words.txt |tr -cs "[a-z][A-Z]" "[\012*]"|tr A-Z a-z|sort|uniq -c|sort -k1nr -k2|head -10
但是有时我们想查找出某一个单词的出现频率这时我们可以使用如下几个命令
文件名称:file 查找单词名称:word
操作命令:
(1)more file | grep -o word | wc -l
(2)cat file | grep -o word | wc -l
(3) grep -o test word | wc -l
如果这些还是不能满足需求,那只能写linux脚本进行实现了。可以使用awk哦
1.命令格式:
wc [选项]文件...
2.命令功能:
统计指定文件中的字节数、字数、行数,并将统计结果显示输出。该命令统计指定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所指定文件的总统计数。
3.命令参数:
-c 统计字节数。
-l 统计行数。
-m 统计字符数。这个标志不能与 -c 标志一起使用。
-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
-L 打印最长行的长度。
--help 显示帮助信息
--version 显示版本信息
4.值得注意的是,-c,c应该是count的缩写,统计的是文件的字节数,而不是通常我们想要的“字数”,字数的统计应该用-w,所以上面提到那个问题,可以怎么做呢?wc并没有提供给我们统计特定一个单词的选项,只能查找呗~所以结合grep就可以这样简单写:
grep cout hello.cpp | wc -l
5.上面命令通过管道串联起来,意思是,查找hello.cpp里所有出现过cout的行,统计行数。
但是,问题来了,如果不只想统计行数,而是想精确到个数(一行里可能会出现多次),应该怎么办呢?
这就是grep的作用了2,-o选项(only的意思)表示只选中那些匹配的地方,比如a cout yes, and b cout no.,匹配cout,结果是两行,每行一个cout。所以要想统计出现次数的话,简单加一个选项就好了:
cat file.csv | awk -F '\t' '{print $2}'
'\t'指的是file.csv不同列以'\t'分割,如果的是以其他符号分割,换成其她符号;
'{print $2}'是指取第2列,此处从1开始计数,第1列,第2列;
一般去重之前要进行排序
cat file.csv | awk -F '\t' '{print $2}' | sort | uniq
前半部分与命令1一样,后面加上| sort | uniq
比如通过命令2发现,第2列取值有两种,分别是'neg'和‘pos’,那么我想知道有多少行的第2列取值为'pos',多少行的第2列取值为'neg'。
cat file.csv | awk -F '\t' '{print $2}' | grep -o 'neg'| wc -l
前半部分与命令1一样,后面加上 | grep -o 'neg'| wc -l
grep -o 'neg'就是取出取值为'neg'的行
wc -l 是计数有多少行
# grep linux abc |wc -l
3
这个问题其实我回答过,abc文件内容:
/etc/vvvvv:
linux
jkdjfkjakslinux
jdkfjksjd
sdkfjksajd
jdlinux linux
sjhdfjaksjdfkjsk
wc命令的功能为统计指定文件中的字节数、字数、行数, 并将统计结果显示输出。 语法:wc [选项] 文件… 说明:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读龋wc同时也给出所有指定文件的总统计数。
最简单的一个命令是
cat a.log |grep "str123" |wc -l
如果是某个文件夹内的,
就可以到这个文件夹后
cat *.* |grep "str123" |wc -l