系统相关
首页 > 系统相关> > linux文本处理工具

linux文本处理工具

作者:互联网

linux文本处理工具


目录

1. 文本查看工具

1.1 cat命令详解

cat命令主要功能是将一个或多个文件或标准输入连接,并输出至标准输出。通常用户查看文件内容。

cat命令的语法如下:

cat [OPTION]... [FILE]...

cat常用选项如下:

选项 说明
-A 显示文本中所有的特殊符号
-n 显示文本时对所有行加行号
-b 显示文本时对仅所有非空行加行号
-s 合并相邻的空行为一行

cat命令的常见用法如下:

[root@xuzhichao ~]# echo -e "1\n\n\n2\n\n3\n4" > file1
[root@xuzhichao ~]# cat file1
1


2

3
4

#显示行号
[root@xuzhichao ~]# cat -n file1
     1	1
     2	
     3	
     4	2
     5	
     6	3
     7	4
     
#仅对非空行显示行号     
[root@xuzhichao ~]# cat -b file1
     1	1


     2	2
    
     3	3
     4	4

#压缩所有空行为一行
[root@xuzhichao ~]# cat -sn file1
     1	1
     2	
     3	2
     4	
     5	3
     6	4

#显示所有的特殊字符
[root@xuzhichao ~]# cat -A file1
1$           <==$代表换行
^I^I$        <==^I代表tab键
$
2$
  $          <==空代表空格键
3$
4$

1.2 more和less命令详解

more和less命令用于打开一个较长的文件时,进行分页显示。

more和less命令的用法大致相同,使用该命令时会进入一个命令窗口,该窗口下有如下快捷键:

快捷键 说明
回车键 文件下移一行显示
空格键 文件向下翻一页
b 向上翻一页
/string 向下搜索内容string
n 配合搜索功能实现同向的下一个查找
退出分页显示

less命令还有一些独有的快捷键

快捷键 说明
?string 向上搜索内容string
N 配合搜索功能实现逆向的下一个查找
g 移动到行首
G 移动到行尾

而且more命令在移动到最后一行后会自动退出more命令。而less命令不会自动退出,因此less命令比more命令更加的灵活。

more或less经常用于结合管道分页显示前一个命令的内容,主要用法如下:

[root@xuzhichao ~]# ls /etc/ | more

1.3 head和tail命令详解

2. 简单文本处理工具

2.1 seq命令详解

seq命令用于以指定增量从首数开始打印数字到尾数,即产生从某个数到另外一个数之间的所有整数,并且可以对整数的格式、宽度、分割符号进行控制。

语法:
  [1] seq [选项]   尾数
  [2] seq [选项]   首数  尾数
  [3] seq [选项]   首数  增量 尾数

选项:
  -f, --format=格式
  -s, --separator=字符串,使用指定的字符串分割数字(默认使用个"\n"分割)
  -w, --sequal-width  在列前添加0 使得宽度相同

seq命令的用法如下:

[root@xuzhichao ~]# seq 5
1
2
3
4
5
[root@xuzhichao ~]# seq -2 2 10
-2
0
2
4
6
8
10

#以空格作为输出的分隔符
[root@xuzhichao ~]# seq -s " " 5
1 2 3 4 5

#等宽输出97到100的数字,不足以0补齐
[root@xuzhichao ~]# seq -w 97 100
097
098
099
100

#格式化输出97耷100的数字,不足以空格补齐,%4g代表宽度为4的整数
[root@xuzhichao ~]# seq -f "%4g" 97 100
  97
  98
  99
 100
 
#格式化输出97耷100的数字,不足以0补齐
[root@xuzhichao ~]# seq -f "%004g" 97 100
0097
0098
0099
0100

2.2 tr命令详解

tr命令用户转换和删除字符,语法如下:

tr [OPTION]... SET1 [SET2]

主要选项如下:

选项 说明
-d 删除第一个字符集SET的字符
-c 取字符集SET的补集
-s 连续重复的字符显示未一个

tr命令的主要用法如下:

#示例一:不跟文件名会从标准输入中读取
[root@xuzhichao ~]# tr 'a-z' 'A-Z'
abc
ABC

#示例二:Windows和linux文件换行的转换。Windows使用回车(\r)加换行(\n)作为换行符,linux使用换行(\n)作为换行符
[root@xuzhichao ~]# cat windows.txt -A
echo "M-DM-cM-:M-CM-#M-,windows"^M$
date^M$
[root@xuzhichao ~]# tr -d '\r' < windows.txt > windows.linux.txt
[root@xuzhichao ~]# cat -A windows.linux.txt 
echo "M-DM-cM-:M-CM-#M-,windows"$
date$

#示例三:把df的输出中的空格转换为“:”
[root@xuzhichao ~]# df | tr -s ' ' ':'
Filesystem:1K-blocks:Used:Available:Use%:Mounted:on
devtmpfs:914464:0:914464:0%:/dev
tmpfs:931520:0:931520:0%:/dev/shm
tmpfs:931520:10080:921440:2%:/run
tmpfs:931520:0:931520:0%:/sys/fs/cgroup
/dev/mapper/centos-root:52403200:4872008:47531192:10%:/
/dev/sda1:508580:171960:336620:34%:/boot
tmpfs:186304:0:186304:0%:/run/user/0

#示例四:将/etc/issue文件的中的所有小写字母转换为大写字母,然后保存在/data/test/issue.out中
[root@xuzhichao ~]# tr '[[:lower:]]' '[[:upper:]]' < /etc/issue > /data/test/issue.out

#示例五:把PATH变量的每个目录都变成独立的一行
[root@xuzhichao ~]# echo $PATH | tr ':' '\n'
/usr/lib64/qt-3.3/bin
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/root/bin

2.3 cut命令详解

cut命令用于使用指定的分隔符对文件或标准输入的内容进行切割,然后对切割的内容按序号进行排序。

cut命令的语法为:

cut OPTION... [FILE]...

cut命令的选项如下:

选项 说明
-d 指定分隔符,默认分隔符为“TAB”
-f 显示指定字段的内容
-c 以字符为单位进行切割
--output-delimiter=STRING 指定输出内容的字段分隔符
--complement 取反
-c 以字节byte为单位进行切割

cut的主要用法如下:

#示例一:取df中磁盘的利用率
[root@xuzhichao ~]# df
Filesystem              1K-blocks    Used Available Use% Mounted on
devtmpfs                   914464       0    914464   0% /dev
tmpfs                      931520       0    931520   0% /dev/shm
tmpfs                      931520   10112    921408   2% /run
tmpfs                      931520       0    931520   0% /sys/fs/cgroup
/dev/mapper/centos-root  52403200 4871908  47531292  10% /
/dev/sda1                  508580  171960    336620  34% /boot
tmpfs  
[root@xuzhichao ~]# df | grep "^/dev/" | tr -s ' ' | cut -d ' ' -f 5 | tr -d %
10
34

#示例二:取ip地址
root@xuzhichao ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.20.17  netmask 255.255.255.0  broadcast 192.168.20.255
        inet6 fe80::9eb8:f0ae:83a6:97dd  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:17:6d:3e  txqueuelen 1000  (Ethernet)
        RX packets 24421  bytes 2172836 (2.0 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 9980  bytes 2705200 (2.5 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
[root@xuzhichao ~]# ifconfig eth0 | grep "inet\>" | tr -s ' ' | cut -d ' ' -f 3
192.168.20.17

#示例三:取/etc/passwd文件的用户名,UID,GID,描述信息。
[root@xuzhichao ~]# head -n 5 /etc/passwd | cut -d ':' -f 1,3-5
root:0:0:root
bin:1:1:bin
daemon:2:2:daemon
adm:3:4:adm
lp:4:7:lp


#示例四:取/etc/passwd文件的用户名,UID,输出的分隔符为“====”。
[root@xuzhichao ~]# head -n 5 /etc/passwd | cut -d ':' --output-delimiter="====" -f 1,3
root====0
bin====1
daemon====2
adm====3
lp====4

#示例五:按照字符切割
[root@xuzhichao ~]# cat > file1 <<EOF
> 1234567890
> 1234567890
> 1234567890
> EOF
[root@xuzhichao ~]# cut -c 2-6 file1
23456
23456
23456
[root@xuzhichao ~]# cut -c 2- file1  <==表示从第2个字符到本行末尾
234567890
234567890
234567890
[root@xuzhichao ~]# cut -c -9 file1  <==表示从本行开始到第9个字符
123456789
123456789
123456789

#示例六:按照字节切割
[root@xuzhichao ~]# cut -b 1-3 file1
123
123
123
[root@xuzhichao ~]# cut -b -3 file1
123
123
123

#取反,取出/etc/passwd中除密码外的其他所有字段
[root@xuzhichao ~]# head -n 5 /etc/passwd | cut -d ':' --complement -f2
root:0:0:root:/root:/bin/bash
bin:1:1:bin:/bin:/sbin/nologin
daemon:2:2:daemon:/sbin:/sbin/nologin
adm:3:4:adm:/var/adm:/sbin/nologin
lp:4:7:lp:/var/spool/lpd:/sbin/nologin

2.4 paste命令详解

paste命令用于把两个文件合并为一个文件,默认以行为单位,默认以TAB作为分隔符。

paste主要选项如下:

选项 说明
-d 指定两个文件之间的分隔符
-s 先将文件的所有行合并成一行,再将合并后的文件按顺序分两行合并在一起

paste命令的用法如下:

[root@xuzhichao ~]# seq 5 > num1
[root@xuzhichao ~]# seq 6 10 > num2
[root@xuzhichao ~]# cat num1
1
2
3
4
5
[root@xuzhichao ~]# cat num2
6
7
8
9
10
[root@xuzhichao ~]# paste num1 num2
1	6
2	7
3	8
4	9
5	10
[root@xuzhichao ~]# paste -d ":" num1 num2
1:6
2:7
3:8
4:9
5:10
[root@xuzhichao ~]# paste -s -d ":" num1 num2
1:2:3:4:5
6:7:8:9:10
[root@xuzhichao ~]# paste -s num1 num2
1	2	3	4	5
6	7	8	9	10

2.5 wc命令详解

wc命令用于统计给定文件或标准输入的文本的行数,单词数,字节数,字符数。

wc的常用选项如下:

选项 说明
-l 只统计行数
-w 只统计单词数,单词是以空格作为分隔
-c 只统计字节数
-m 只统计字符数
-L 显示文件中最长的行

注意:一个英文字母或符号为一个字符,占一个字节;一个汉字为两个字符,占四个字节。

wc的用法如下:

#示例一:wc默认显示内容
[root@xuzhichao ~]# wc /etc/passwd
  38   74 1936 /etc/passwd           <==三个数字分别代表行数,单词数,字节数
  
#示例二:统计光盘中rpm包的个数
[root@xuzhichao ~]# ll /misc/cd/Packages/*.rpm | wc -l
10070

2.6 sort或uniq命令详解

2.7 diff和patch命令详解

标签:00,May,pts,xuzhichao,192.168,文本处理,linux,工具,root
来源: https://www.cnblogs.com/xuwymm/p/14798150.html