linux下几种常用的文本处理工具
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下几种常用的文本处理工具相关的知识,希望对你有一定的参考价值。
1.几种常见的文本处理命令
1.cat
cat我们在早期的学习中最常见的命令之一,但我们用到的只是cat命令本身,如cat /etc/passwd,查看/etc/passwd 的内容,没有用到cat的选项,其实cat命令是有选项的,只不过我们用的并不多,具体参数如下:
先用vim编辑一个简单的文本,helloworld,内容即是helloworld,这里只是为了展示,具体vim的用法会在下面介绍。
cat /app/block/helloworld //查看helloworld文本内容
-E 查看文本时显示文本中的liux换行符$
cat /app/block/helloworld //显示helloworld中的换行符$
-v 查看windows文本时显示Windows中的换行符^M
使用rz命令上传windows系统中的helloworld.txt到/app/block下。
cat /app/block/helloworld.txt //显示helloworld.txt中的换行符^M
-T 显示Tab
cat -T /app/block/helloworld //显示helloworld中的Tab
-n显示的结果前增加行号
cat -n /app/block/helloworld //显示的helloworld中增加行号
-b显示的结果之前增加行号,但空行不参加编号
cat -b /app/block/helloworld //helloworld中的空行不编号
-s压缩连续空行成一行
需要在文本后加入几个空行
cat -s /app/block/helloworld //压缩helloworld中连续空行为一行
2.tac
tar命令的功能只有一个,即是将文本中的内容倒序显示
tac /app/block/helloworld //倒序显示helloworld
3.rev
rev的功能也只有一个,即是对标准输入的内容每行倒着显示,支持管道。
cat /app/block/helloworld|rev //helloworld每行倒着显示
4.head
head有两个常用的参数,head是头的意思,就是对文本头部分进行的操作。
-n 打印文本开头的n行
cat /app/block/helloworld|head -1 //打印helloworld的第一行
-c n 取一段字符的前n字节
echo helloworld|head -c 5 //取helloworld的前5个字节
5.tail
tail与head相似,同样有两个常用的参数,但tail是尾巴的意思,就是对文本尾部进行操作。
-n 打印文本结尾的n行
cat /app/block/helloworld|tail -1 //打印helloworld的最后一行
-c n 取一段字符的后n字节
echo helloworld|tail -c 5 // 取helloworld的后5个字节
tail取最后n个字符包含换行符$.
6.cut
cut即是剪切的意思,剪切文本中的内容,一般常用的选项有四个,而,-d,-f,一般连用
-d+参数1(d +中间没空格)-f+参数2 以参数1作为分割符,剪切第参数2列
hellow文本
cat /app/block/helloworld|cut -d‘ ‘ -f1 //取出helloworld中以空格为间隔的第一列
-f选项后可以指定一个范围,并不一定是一个参数,如:
cat /app/block/helloworld|cut -d‘ ‘ -f1-3, 5 //取出helloworld中以空格为间隔的第一列到第三列和第5列
-c m/m-n/m-n,k取出字符串中第m/m-n/m-n,k字符
echo hi hello world i am fun|cut -c 1-3,5 //显示字符串中第1-3,和第五个字符
cut --output-delimiter="#" 输出分隔符
7.past
paste命令的功能是用来合并,可以单独使用,也可以配合选项使用,有两个选项
paste /app/block/helloworld /app/block/helloworld.txt //合并helloworld和helloworld.txt
-d‘Q‘ f1 f2 合并后以Q作为分隔符,Q可以是任何字符
paste -d‘|‘ /app/block/helloworld /app/block/helloworld.txt //合并helloworld和helloworld.txt,并用|作为间隔符
-s 将多行内容多行变一行
paste -s /app/block/helloworld //将helloworld中的多行内容变为一行
8.wc
-l 显示文本的行数
cat /app/block/helloworld|wc -l //显示helloworld的行数
-m 显示文本中的字符数
cat /app/block/helloworld |wc -m //显示helloworld中的字符数
-c 显示文本中的字节数
cat /app/block/helloworld |wc -c //显示helloworld中的字节数
-w 显示文本中单词数
cat /app/block/helloworld |wc -w //显示helloworld中的单词数
-L 显示文本中最长行的长度
cat /app/block/helloworld |wc -L //显示helloworld中最长行的长度
2.文本三剑客之grep
grep是一个对文本进行过滤的的文本处理工具,只能过滤出内容,他有下面这些选项:
-v 关键字 显示不包含关关键字的行,取反
cat /app/block/helloworld|grep -v hello //过滤出不包含hello的行
-i 关键字 忽略关键字的大小写
cat /app/block/helloworld|grep -i hello //过滤出hello,并且不区分其中字母的大小写
-n 显示的结果每行前增加行号
cat /app/block/helloworld |grep -n hello //过滤出含有hello的行,并且在结果上加上行号
-c 仅显示找出的结果的行数
cat /app/block/helloworld |grep -c hello //过滤hello但不现实结果,只显示过滤出hello的行数
-o 仅显示匹配到的关键字,不显示同行的其他内容
cat /app/block/helloworld |grep -o hello //只显示过滤出的关键字hello,不现实其他的内容
-A # 显示关键字行及向下的n行
cat /app/block/helloworld |grep -A2 hello //过滤出包含hello的行以及其下一行
-B # 显示关键字行及向上的n行
cat /app/block/helloworld |grep -B hello //过滤出包含hello的行以及上一行
-C # 显示关键字行及向上n行和向下的n行
cat /app/block/helloworld |grep -C1 hello //过滤出包含hello的行以及其下一行和上一行
-e 关键字1 -e 关键字2 …… 多个关键字之间是或的关系
cat /app/block/helloworld |grep -e hello -e Hello //过滤出包含hello或者Hello的行
-w 关键字 匹配整个单词
cat /app/block/helloworld |grep -w hello //过滤出只含有hello单词的行
-E 等于egrep 使用扩展正则表达式
加上-E或者使用egrep过滤即表示使用扩展正则表达
-F 等于fgrep 不使用正则表达式
正则表达式在下篇博客会具体介绍。
以上是关于linux下几种常用的文本处理工具的主要内容,如果未能解决你的问题,请参考以下文章
[原创] Linux下几种文件传输命令 sz rz sftp scp介绍