一、cat(tac):(倒序)查看文件内容
- 命令格式
cat [参数] [文件名]
- 命令参数
-n:对所有行进行编号
-b:对所有非空行进行编号
-s:压缩多行非空行为一行非空行
-T:tab缩进用 ^I 表示
例1: cat -n:对所有行进行编号
:例2. cat -b:对所有非空行进行编号
例3.cat -sn:压缩多行非空行为一行非空行
例4.cat >cat.log<<EOF:将标准输入的内容写入到文件中;输入EOF结束
例5.tac 示例:tac cat.log
二、cut:将文件的每一行按指定分隔符分割并输出
- 命令格式
cut [参数] [文件名]
- 命令参数
-c:仅显示行中指定范围的字符(如"-c-5","-c1-5","-c5-"等)
-d:指定字段的分隔符,默认是"TAB"
-f:显示指定字段的内容
--complement:不显示符合条件的列或字符
例一:显示文件的前五个字符
cut -c-5 /etc/passwd # "-c-5","-c1-5" 都表示前五个字符,"-c5-"表示从第五个字符开始显示到最后一个字符
例二:不显示符合条件的列
cut -d":" -f2,3,4,5,6 --complement /etc/passwd
三、split:分割大文件为多个小文件
- 命令格式
split [参数] [文件名]
- 命令参数
-a:指定分割后文件的后缀长度
-C:按指定大小分割文件
-l:按指定行数分割文件
-d:使用数字作为后缀
例:按1M大小分割文件并指定分割后的文件名
split -C 1M test.txt -d -a 2 test
四、paste:按行合并文件内容
- 命令格式
paste [参数] [file1] [file2]
- 命令参数
-d:指定不同于空格或tab键的域分隔符。例如用@分隔域,使用- d @
-s:将每个文件合并成行而不是按行粘贴
-:使用标准输入。例如ls |paste -d " " - -,意即只在一列上显示输出
例一:
例二:
例三:
五、sort:对文件的文本内容排序
- 命令格式
sort [参数] [file]
- 命令参数
-b:忽略每行开始处的空白字符
-c:检查文件是否被排过序
-d:排序时只处理英文字符,数字和空格
-f:排序时将小写字母视为大写字母
-m:将几个排序好的文件进行合并
-M:将前面三个字母按照月份的缩写进行排序
-n:依照数值的大小排序
-r:以相反的顺序进行排序
-t:指定排序时的列分隔符
例:忽略每行开始处的空白字符,对第二域按数字大小进行排序
六、uniq:去除重复行
- 命令格式
uniq [参数] [file]
- 命令参数
-c:相同行数出现的次数
-d:仅显示重复出现的列
-u:仅显示出现一次的列
七、wc:统计文件的字符数,单词数和行数
- 命令格式
wc [参数] [file]
- 命令参数
-l:统计行数
-w:统计单词数
-c:统计字符数
八、grep/egrep:过滤字符串
- 命令格式
grep/egrep [参数] [file]
建议使用别名:alias grep='egrep -i --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn}'
- 命令参数
-a:不要忽略二进制的数据。
-A <显示行数>:除了显示符合范本样式的那一列之外,并显示该行之后的内容。
-B <显示行数>:除了显示符合样式的那一行之外,并显示该行之前的内容。
-c:计算符合样式的列数。
-C <显示行数>:除了显示符合样式的那一行之外,并显示该行之前后的内容。
-H:在显示符合样式的那一行之前,显示该行所属的文件名称。
-i:忽略字符大小写的差别。
-L:列出文件内容不符合指定的样式的文件名称。
-n:在显示符合样式的那一行之前,标示出该行的列数编号。
-q:不显示任何信息。
-r:递归搜索目录
-s:不显示错误信息。
-v:显示不包含匹配文本的所有行。
-w:只显示全字符合的列。
-x:只显示全列符合的列。
正则表达式
^:匹配输入字符串的开始位置
$:匹配输入字符串结尾的位置
^$:匹配空白行
.:匹配任意单个字符
*:匹配紧挨着的前面的字符任意次
.*:匹配任意字符串
?:匹配紧挨着的前面的字符串0次或1次
+:匹配紧挨着的前面的字符串1次或多次
\:转义字符
|:指明两项或多项之间的一个选择
{m,n}:匹配紧挨着的前面的字符m到n次
{,m}:匹配紧挨着的前面的字符0次到m次
{m,}:匹配紧挨着的前面的字符最少m次
():标记一个子表达式的开始和结束位置,\1表示第一个子表达式
[]:匹配指定范围内的任意单个字符
[^]:匹配指定范围外的任意单个字符
grep支持的字符和字符集合
\d:数字字符匹配。等效于 [0-9]。
\s:匹配任何空白字符,包括空格、制表符、换页符等。与 [ \f\n\r\t\v] 等效。
\S:匹配任何非空白字符。与 [^ \f\n\r\t\v] 等效
\w:匹配任何字类字符,包括下划线。与“[A-Za-z0-9_]”等效。
\W:与任何非单词字符匹配。与“[^A-Za-z0-9_]”等效。
[:digit:]:所有数字, 相当于0-9 或者\d
[:lower:]:所有的小写字母
[:upper:]:所有的大写字母
[:alpha:]:所有的字母
[:alnum:]:相当于[0-9a-zA-Z]
[:space:]:空白字符 相当于\s
[:punct:]:所有标点符号
例一:显示meminfo文件中以不区分大小的s开头的行
例二:显示/etc/passwd中,以r开头的字符而后跟了任意单个字符的行
例三:显示/etc/passwd中,r后跟了o,o出现最少一次
例四:显示/etc/passwd中,r后跟了o,o只出现2次的行
例五:显示meminfo文件中以一个数字开头并以一个与开头数字相同的数字结尾的行
例六:匹配ABC类IP地址即 1.0.0.1---223.255.255.254
cat > ip.txt <<EOF
1.0.0.254
1.0.0.255
1.2.3.4
223.255.255.254
224.255.255.252
2.255.255.255
EOF
egrep "^([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])$" ip.txt
例七:匹配手机号码:手机号码是1[3|4|5|8]后面接9位数字的
cat > tel.txt << EOF
13690876890
12589098379
15608764083
15820974619
138074082711
18618203761
19209783900
1329873909
EOF
egrep -x "1[3|4|5|8][0-9]{9}" tel.txt
九、tr:替换或者删除字符
- 命令格式
tr [参数] [file]
- 命令参数
-c:指定字符范围的补集
-d:删除指定范围的字符
-s:把多个重复的字符压缩为一个
例一:将大写字符转换为小写字符
例二:删除指定范围的字符
例三:删除指定范围字符的补集
十、其它命令
more(less):分页显示文件内容
head(tail):显示文件内容头部
join:将两个文件中,制定栏位内容相同的行连接起来
iconv:转换文件编码格式
dos2unix:将dos文件格式转换为Unix格式
diff(vimdiff):比较文件差异
rev:反向输出文件内容