Linux 命令合集(二):查看文件及内容处理命令

2017-06-15  本文已影响0人  w也不知道

一、cat(tac):(倒序)查看文件内容

  1. 命令格式
cat [参数] [文件名]
  1. 命令参数
  -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:将文件的每一行按指定分隔符分割并输出

  1. 命令格式
cut [参数] [文件名]
  1. 命令参数
-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:分割大文件为多个小文件

  1. 命令格式
split [参数] [文件名]
  1. 命令参数
-a:指定分割后文件的后缀长度
-C:按指定大小分割文件
-l:按指定行数分割文件
-d:使用数字作为后缀

例:按1M大小分割文件并指定分割后的文件名

split -C 1M test.txt -d -a 2 test

四、paste:按行合并文件内容

  1. 命令格式
paste [参数] [file1] [file2]
  1. 命令参数
-d:指定不同于空格或tab键的域分隔符。例如用@分隔域,使用- d @
-s:将每个文件合并成行而不是按行粘贴
-:使用标准输入。例如ls |paste -d " " - -,意即只在一列上显示输出

例一:



例二:



例三:

五、sort:对文件的文本内容排序

  1. 命令格式
sort [参数] [file]
  1. 命令参数
-b:忽略每行开始处的空白字符
-c:检查文件是否被排过序
-d:排序时只处理英文字符,数字和空格
-f:排序时将小写字母视为大写字母
-m:将几个排序好的文件进行合并
-M:将前面三个字母按照月份的缩写进行排序
-n:依照数值的大小排序
-r:以相反的顺序进行排序
-t:指定排序时的列分隔符

例:忽略每行开始处的空白字符,对第二域按数字大小进行排序


六、uniq:去除重复行

  1. 命令格式
uniq [参数] [file]
  1. 命令参数
-c:相同行数出现的次数
-d:仅显示重复出现的列
-u:仅显示出现一次的列

七、wc:统计文件的字符数,单词数和行数

  1. 命令格式
wc [参数] [file]
  1. 命令参数
-l:统计行数
-w:统计单词数
-c:统计字符数

八、grep/egrep:过滤字符串

  1. 命令格式
grep/egrep [参数] [file]
    建议使用别名:alias grep='egrep -i --color=auto --exclude-dir={.bzr,CVS,.git,.hg,.svn}'
  1. 命令参数
-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:替换或者删除字符

  1. 命令格式
tr [参数] [file]
  1. 命令参数
-c:指定字符范围的补集
-d:删除指定范围的字符
-s:把多个重复的字符压缩为一个

例一:将大写字符转换为小写字符



例二:删除指定范围的字符


例三:删除指定范围字符的补集


十、其它命令

 more(less):分页显示文件内容
 head(tail):显示文件内容头部
 join:将两个文件中,制定栏位内容相同的行连接起来
 iconv:转换文件编码格式
 dos2unix:将dos文件格式转换为Unix格式
 diff(vimdiff):比较文件差异
 rev:反向输出文件内容

上一篇下一篇

猜你喜欢

热点阅读