您的位置:首页 > 其它

高级文本处理命令

2018-03-19 22:29 281 查看
1、cut:cut命令可以从一个文本文件或者文本流中提取文本列。
wc -c xxx.log 这条命令的作用是统计xxx.log的字符数,输出为20  xxx.log,现在如果只想要前面的数字,此时就需要切割命令,形式如下:
wc -c xxx.log | cut -d ' ' -f 1

此命令的作用是统计xxx.log的字符数,并且切割输出的字符串,分隔符是空格,然后取第一个元素。cut命令各种使用方法示例:



2、sort:排序命令
比如说对/etc/passwd文件内容排序





从上图中可以比较明显的看出来,输出的内容是按照字典序排序的
cat /etc/passwd|sort -t ':' -k 3 : 这条命令的作用是先以冒号分割,然后按照第三列排序(字典序)
cat /etc/passwd|sort -t ':' -k 3n : 这条命令的作用是先以冒号分割,然后按照第三列排序(数字序) 
cat /etc/passwd|sort -t ':' -k 3nr : 这条命令的作用是先以冒号分割,然后按照第三列排序(倒序,数字序) 
cat /etc/passwd|sort -t ':' -k 6.2,6.4 -k  1r : 这条命令的作用是先以冒号分割,然后先按照第六列的第二个到第四个字符正向排序,再基于第一列进行反向排序
cat /etc/passwd|sort -t ':' -k 7 -u : 这条命令的作用是先以冒号分割,然后按照第七列进行排序,然后去重
3、uniq:去重命令,只能去除排序过的文件中的重复行
-c 统计重复次数
4、wc:统计命令,不带选项时统计的是字符数
-l  统计行数
-w 统计单词数
-m 统计文件的字节数
5、sed:文本处理命令,用法如下:
sed '2d'  testfile:删除testfile文件的第二行,并输出,testfile的内容并没有被真正修改
sed  -i '2d'  testfile:删除testfile文件的第二行,输出并写回,testfile的内容被修改
sed '2,$d'  testfile: 删除第二行及以后
sed '$d'  testfile:删除最后一行
sed '/test/'d  testfile:删除包含test的行
sed 's/test/mytest/g'  testfile:替换,将每一行的test替换为mytest,如果不带g,则只替换每一行的第一个test
sed -n 's/^test/mytest/p' testfile:如果某一行的开头是test,则把test替换为mytest,-n选项和p标志一起使用表示只打印那些发生替换的行
sed  's/^192.168.0.1/&localhost/' testfile: 用192.168.0.1localhost去替换掉localhost
sed -n 's/\(love\)able/\1rs/p' testfile:love被标记为1,所有loveable被替换成lovers,而且替换的行会被打印出来
sed -e '1,5d'  -e  's/test/check/':先删除第1至5行,再用check替换test
6、awk:文本处理命令,这个命令非常强大,甚至专门可以用来编程
last -n 5|awk  '{print $1}':打印第一列,默认分隔符是空格或者tab
/etc/passwd| awk  -F  ':'  '{print $1}':打印第一列,分隔符是冒号
cat /etc/passwd|awk -F ':'  '{print  $1"\t"$7}':双引号之间的\t是拼接两部分的字符,当然也可以是别的字符
cat /etc/passwd|awk -F ':'  'BEGIN {print "name,shell"}   {print $1","$7} END {print "blue,/bin/nosh"}':先输出name,shell这个字符串,然后循环输出第一列和第七列,最后输出字符串blue,/bin/nosh
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: