开发者社区> 科技小先锋> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

Linux文本过滤与处理命令

简介:
+关注继续查看

  文本处理命令在Linux的使用过程中也是很基础的知识,我来总结一下linux文本处理命令的使用。

     基础命令:

     cat / more / less / grep / head / tail / wc  / uniq / cut / sort / join / paste      tr / tee /  split / spell / diff / printf /

 


1.cat 连接文件并显示内容

         -n 对输出的文本进行编号
         -b 对输出的文本进行编号,但是不对空白行编号
         -s 将两行以上的空白行替换为一行空白行
         -E 在每一行的结尾显示“$”
         -T 用“^”I代替“TAB”作为显示


2.more 文件内容分屏查看

         -d 当用户错误输入时产生提示符
         -f 计算实际行数
         -p 不卷页显示,而是清屏,然后显示内容
         +/<字符串>搜寻指定字符串,并从此处开始显示
         +num 从指定行开始显示


3.less 分屏显示文件内容
         -e 当文件显示结束后,自动离开
         -f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
         -g 只标志最后搜索的关键词
         -i 忽略搜索时的大小写
        -m 显示类似more命令的百分比
        -N 显示每行的行号
        -o<文件名> 将less 输出的内容在指定文件中保存起来

   选择参数

        按键功能如下:
        b 向后翻一页
        d 向后翻半页
        h 显示帮助界面
        Q 退出less 命令
        u 向前滚动半页
        y 向前滚动一行
       空格键 滚动一行
        回车键 滚动一页


4.head 显示文件头部内容

  将打印文件的前10行道标准输出,如果不指定文件,将从标准输入中输入

     -c<字节> 显示文件前N字节数
     -n<行数> 显示文件的前N行数

 

5.tail 输出文件尾部内容
      -f 循环读取,当文件内容增加时,持续显示新增在后面的内容,常用来监控日志文件
     -q 不显示处理信息
     -v 显示详细的处理信息
     -c<数目> 显示的字节数


6.wc 统计文件的字节数,单词数和行数

      -c 显示字母数
      -l 显示行数
      -w 显示单词数


7.uniq 报告或忽略文件中的重复行

      -c 显示重复次数
      -d 显示重复行
      -u 显示没有重复的行


8.cut 剪切删除文件中的指定段

     -b=<列表> 只输出指定的字节数 <--bytes>
     -c=<列表> 只输出指定的字符 <--characters>
     -d= 使用定界符代替TAB键 <--delimiter>
     -f=<列表> 只输出指定的域。


9.sort 对文件进行行排序

    -b 忽略行前的空格
    -c 检查是否已排序过
    -d 排序时只识别英文数字及空格
    -f 把小写字母看作大写字母
    -m 合并排序好的文件
    -n 按照数值排序
    -r 逆序排序


10 join 文件1 文件2

      针对每一对具有相同内容的输入行,整合为一行写到标准输出, 默认的内容连接区块是由第一个空白符代表的分界符号。当文件1 或文件2 都被指定为"-"时,程序将从标准输入读取数据。

  将两个文件 内容相同的行连接起来
root@snail-hnlinux:~# cat test1 //显示文件test1 的内容
a 01
b 02
c 03
d 04
e 05
root@snail-hnlinux:~# cat test2 //显示文件test2 的内容
a xxx
b www
c jjj
d kkk
e lll
root@snail-hnlinux:~# 

root@snail-hnlinux:~# join test1 test2 //连接两个文件
a 01 xxx
b 02 www
c 03 jjj
d 04 kkk
e 05 lll
root@snail-hnlinux:~# join test2 test1
a xxx 01
b www 02
c jjj 03
d kkk 04
e lll 05

11.split 将大文件切割成为小文件

    -d 使用数字而不是字母作为切割后的小文件的后缀;
   -v 显示详细的处理信息
   -b<字节> 每个分割文件的大小
   -l<行数> 指定切割的行数作为切割文件的单位;
   -C <数字> 指定输出到每一个文件的每一行的大小,数字后缀可以是
b: 512(blocks)
K: 1024(kibiBytes)
KB: 1000(kiloBytes)
M: 1024*1024(mebiBytes)
MB: 1000*1000(megaBytes)
G: 1024*1024*1024(gibiBytes)
GB: 1000*1000*1000(gibaBytes)

12.tr

从标准输入中替换、缩减和/或删除字符,并将结果写到标准输出。

  -d, --delete            删除匹配SET1 的内容,并不作替换
  -s, --squeeze-repeats    如果匹配于SET1 的字符在输入序列中存在连续的
                重复,在替换时会被统一缩为一个字符的长度
  -t, --truncate-set1        先将SET1 的长度截为和SET2 相等

SET 是一组字符串,一般都可按照字面含义理解。解析序列如下:

  \NNN    八进制值为NNN 的字符(1 至3 个数位)
  \\        反斜杠
  \a        终端鸣响
  \b        退格
  \f        换页
  \n        换行
  \r        回车
  \t        水平制表符
  \v        垂直制表符
  字符1-字符2    从字符1 到字符2 的升序递增过程中经历的所有字符
  [字符*]    在SET2 中适用,指定字符会被连续复制直到吻合设置1 的长度
  [字符*次数]    对字符执行指定次数的复制,若次数以 0 开头则被视为八进制数
  [:alnum:]    所有的字母和数字
  [:alpha:]    所有的字母
  [:blank:]    所有呈水平排列的空白字符
  [:cntrl:]    所有的控制字符
  [:digit:]    所有的数字
  [:graph:]    所有的可打印字符,不包括空格
  [:lower:]    所有的小写字母
  [:print:]    所有的可打印字符,包括空格
  [:punct:]    所有的标点字符
  [:space:]    所有呈水平或垂直排列的空白字符
  [:upper:]    所有的大写字母
  [:xdigit:]    所有的十六进制数
  [=字符=]    所有和指定字符相等的字符


13  tee 将输入的内容复制到标准输出。


14 paste 会把每个文件以列对列的方式,一列列地加以合并

    -d 指定间隔字符

[root@hnlinux lx138.com]# cat a.txt //合并文件的列
123
456
789
1010
10000
111111
000000
5555555
6666666
[root@hnlinux lx138.com]# cat b.txt //合并文件的列
aaa
bbb
bbb
bsss
ssss
weeee
rrrrrr
jjjjjjj
ooooooo
[root@hnlinux lx138.com]# paste a.txt b.txt //合并文件的列
123 aaa
456 bbb
789 bbb
1010 bsss
10000 ssss
111111 weeee
000000 rrrrrr
5555555 jjjjjjj
6666666 ooooooo
[root@hnlinux lx138.com]#
 


15 diff  以逐行的方式,比较文本文件的异同处。所是指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录
    -b 忽略空格
    -B 忽略空白行
    -i 忽略大小写
    --brief 只报告两个文件是否相同,不报告详细的不同信息
    -c 使用上下文输出格式
    -d 改变算法,使得diff命令可能找到一个更小的文件差异
    -e 产生一个将文件1变成文件2的“ed script”
    -r 比较目录时递归比较子目录
    -q 不报告差异,只说明两者内容是否有差异
    -s 当比较的两个文件相同时报告信息



本文转自willis_sun 51CTO博客,原文链接:http://blog.51cto.com/willis/1845779,如需转载请自行联系原作者


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Linux的10个最危险命令
Linux的10个最危险命令
82 0
11月29日云栖精选夜读 | Linux里10个最危险的命令
Linux命令行佷有用、很高效,也很有趣,但有时候也很危险,尤其是在你不确定你自己在正在做什么时候。 这篇文章将会向你介绍十条命令,但你最好不要尝试着去使用。 当然,以下命令通常都是在root权限下才能将愚蠢发挥到无可救药;在普通用户身份下,破坏的只是自己的一亩三分地。
2583 0
一些极度危险的linux命令
在linux中有些命令可能功能强大,方便快捷,但是这些命令在测试环境中有些可以用,但别在生产上挑战。有些命令一敲,可能你的职业生涯由此转折。 关于rm -rf   对于这个命令真没什么好说的,最好的挽救措施就是备份,可能在有些环境中这类命令都是禁用的,但是不管怎么样,注意备份。
637 0
[linux]永远不要在 Linux 执行的 10 个最危险的命令
Linux命令行佷有用、很高效,也很有趣,但有时候也很危险,尤其是在你不确定你自己在正 在做什么时候。这篇文章并不打算引来你对Linux或linux 命令行的愤怒。
1166 0
Linux命令参数详细解析-diff
diff test redhat test diff-test ~ ~ ...
877 0
Linux命令参数详细解析-vim
用法: vim [参数] [文件 ..] 编辑指定的文件 或: vim [参数] - 从标准输入(stdin)读取文本 或: vim [参数] -t tag 编辑 tag 定义处的文件 或: ...
930 0
6963
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载