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下几种文件传输命令

Linux下几种文件传输命令 sz rz sftp scp

[原创] Linux下几种文件传输命令 sz rz sftp scp介绍

Linux下几种文件传输命令 sz rz sftp scp 对比

Linux/Unix下几种实现定时的方式总结

Linux/Unix下几种实现定时的方式总结