cat命令:
-n 增加行号 空行也增加行号 [root@localhost ~]# cat f1 abcd abcd abcd abcd [root@localhost ~]# cat -n f1 1 abcd 2 abcd 3 4 abcd 5 6 7 8 abcd 9 -b 增加行号 空行跳过不加行号 [root@localhost ~]# cat -b f1 1 abcd 2 abcd 3 abcd 4 abcd -s 将相邻多余空行压缩 [root@localhost ~]# cat -s f1 abcd abcd abcd abcd -T 查看tab键 -v 查看文件的^M字符(也就是Windows下的空格) -A 显示文件里所有的字符 [root@localhost ~]# cat -A f1 abcd$ abcd$ $ abcd$ $ $ $ abcd$ $-E 显示行结束符$ 与-A的不同是——E显示的只是$符号,-A显示的是所有的字符 [root@localhost ~]# cat -E f1 abcd$ abcd$ $ abcd$ $ $ $ abcd$ $
tac命令:
倒序查看文件内容 [root@localhost ~]# cat f1 abcd efgh mnbv lkjh poiu qwer [root@localhost ~]# tac f1 qwer poiu lkjh mnbv efgh abcd
rev命令:
反向显示每一行(按字符) [root@localhost ~]# cat f1 abcdefghijklmn [root@localhost ~]# rev f1 nmlkjihgfedcba more命令:只能向下翻 -d 给出提示(空格翻页,q退出,回车翻一行)
less命令:
/字符串 n顺着方向搜 N逆着方向搜 向下 ?字符串 与/相反,n向上 N向下
显示文本前或后行的内容
-
head命令:
head [OPTION]... [FILE]... -c #: 指定获取前# 字节 -n #: 指定获取前#行 行 [root@localhost ~]# head f1 abcaskdfj asfdkjhja lasdkfjldf lkjsloiweuoiuw werqwerttqw [root@localhost ~]# head -n 2 f1 abcaskdfj asfdkjhja
-#:指定行数
[root@localhost ~]# head -4 f1 abcaskdfj asfdkjhja lasdkfjldf lkjsloiweuoiuw 默认情况下是head是查看10行 可以自己修改默认查看行数
-
tail 命令:
tail -n # file 查看后#行 [root@localhost ~]# tail -n 2 f1 werqwerttqw -f: 跟踪显示文件新追加的内容, tail -n 0 -f /var/log/messages & 实时查看日志最新信息(只显示最新的,老日志不显示) -c查看后#字节
按列抽取文本cut和合并文件paste
-
cut命令:
-d DELIMITER: 指明分隔符,默认tab -f FILEDS: #: 第# 个字段 [root@localhost ~]# cat f1 abc bcd efg hij lmn [root@localhost ~]# cat f1 |cut -d ' ' -f 2 abc #,#[,#] :离散的多个字段,例如1,3,6 [root@localhost ~]# cat f1 |cut -d ' ' -f 2,3 abc bcd #-# :连续的多个字段, 例如1-6 [root@localhost ~]# cat f1 |cut -d ' ' -f 2-5 abc bcd efg hij 混合使用:1-3,7 [root@localhost ~]# cat f1 |cut -d ' ' -f 2-5,6 abc bcd efg hij lmn -c 按字符切割 --output-delimiter=STRING cut -d : -f 1,3 file cut -c 44-46 cut -d : -f 1,3 --output-delimiter=“ ” file [root@localhost ~]# df | tr -s ' ' Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/vg0-root 20511356 343196 19119584 2% / tmpfs 502068 0 502068 0% /dev/shm /dev/sda1 194241 34117 149884 19% /boot /dev/mapper/vg0-usr 10190136 1962620 7703228 21% /usr /dev/mapper/vg0-var 20511356 122168 19340612 1% /var [root@localhost ~]# df | tr -s ' '|tr ' ' ':' Filesystem:1K-blocks:Used:Available:Use%:Mounted:on /dev/mapper/vg0-root:20511356:343196:19119584:2%:/ tmpfs:502068:0:502068:0%:/dev/shm /dev/sda1:194241:34117:149884:19%:/boot /dev/mapper/vg0-usr:10190136:1962620:7703228:21%:/usr /dev/mapper/vg0-var:20511356:122168:19340612:1%:/var [root@localhost ~]# df | tr -s ' '|tr ' ' ':'|cut -d: -f 5 Use% 2% 0% 19% 21% 1% [root@localhost ~]# df | tr -s ' '|tr ' ' ':'|cut -d: -f 5|cut -d% -f 1 Use 2 0 19 21 1 [root@localhost ~]#
paste命令:
paste 合并两个文件同行号的列到一行 paste [OPTION]... [FILE]... -d 分隔符: 指定分隔符,默认用TAB -s : 所有行合成一行显示 paste f1 f2 paste -s f1 f2 [root@localhost ~]# paste -s f1 f2 abc bcd efg hij lmn 123 456 678 987 9765 [root@localhost ~]# paste f1 f2 abc bcd efg hij lmn 123 456 678 987 9765 [root@localhost ~]# paste -d ':' f1 f2 abc bcd efg hij lmn:123 456 678 987 9765
收集文本统计数据wc
计数单词总数、行总数、字节总数和字符总数 可以对文件或STDIN 中的数据运行 [root@localhost ~]# cat f1 abc bcd efg hij lmn [root@localhost ~]# wc f1 1 5 21 f1 行数 字数 字符数 文件名 使用 -l 来只计数行数 [root@localhost ~]# cat f1 abc bcd efg hij lmn qwertyuiolkgfdsazxc [root@localhost ~]# wc -l f1 2 f1 使用 -w 来只计数单词总数 [root@localhost ~]# wc -w f1 6 f1 使用 -c 来只计数字节总数 [root@localhost ~]# wc -c f1 42 f1 使用 -m 来只计数字符总数 [root@localhost ~]# wc -m f1 42 f1
文本排序sort
把整理过的文本显示在STDOUT ,不改变原始文件 sort [options] file(s) 常用选项 -r 执行反方向(由上至下)整理 [root@localhost ~]# df | sort -r tmpfs 500680 6764 493916 2% /run tmpfs 500680 0 500680 0% /sys/fs/cgroup tmpfs 500680 0 500680 0% /dev/shm tmpfs 100136 0 100136 0% /run/user/0 Filesystem 1K-blocks Used Available Use% Mounted on devtmpfs 486152 0 486152 0% /dev /dev/sda3 20961280 2670020 18291260 13% /usr /dev/sda2 41922560 584656 41337904 2% / /dev/sda1 496300 140508 355792 29% /boot -n 执行按数字大小整理 -f 选项忽略(fold )字符串中的字符大小写 -u 选项(独特,unique )删除输出中的重复行 [root@localhost ~]# cat f1 abc abc abc bcd abc abc [root@localhost ~]# cat f1|sort -u abc bcd -t c 选项使用c 做为字段界定符 -k X 选项按照使用c 字符分隔的X 列来整理能够使用多次 [root@localhost ~]# df |tail -8|tr -s ' ' ':' | sort -t : -k2 tmpfs:100136:0:100136:0%:/run/user/0 /dev/sda3:20961280:2670020:18291260:13%:/usr /dev/sda2:41922560:584656:41337904:2%:/ devtmpfs:486152:0:486152:0%:/dev /dev/sda1:496300:140508:355792:29%:/boot tmpfs:500680:0:500680:0%:/dev/shm tmpfs:500680:0:500680:0%:/sys/fs/cgroup tmpfs:500680:6764:493916:2%:/run
uniq
uniq 命令:从输入中删除重复的前后相接的行 [root@localhost ~]# cat f1 abc abc abc bcd abc abc [root@localhost ~]# cat f1 |uniq abc bcd abc uniq [OPTION]... [FILE]... -c: 显示每行重复出现的次数; [root@localhost ~]# cat f1 |uniq -c 3 abc 1 bcd 2 abc -d: 仅显示重复过的行; [root@localhost ~]# cat f1 |uniq -d abc abc -u: 仅显示不曾重复的行;连续且完全相同方为重复 [root@localhost ~]# cat f1 |uniq -u bcd 常和sort 命令一起配合使用: [root@localhost ~]# sort f1 |uniq -c 5 abc 1 bcd
比较文件
比较两个文件之间的区别 $ diff foo.conf-broken foo.conf-works 5c5 < use_widgets = no --- > use_widgets = yes 注明第5 行有区别(改变) 复制对文件改变patch diff 命令的输出被保存在一种叫做“补丁”的文件中 使用 -u 选项来输出“统一的(unified )”diff 格式文 件,最适用于补丁文件。 patch 命令复制在其它文件中进行的改变(要谨慎使用 !) 适用 -b 选项来自动备份改变了的文件 $ diff -u foo.conf-broken foo.conf-works > foo.patch $ patch -b foo.conf-broken foo.patch
Linux上文本三剑客:
grep :文本过滤( 模式:pattern) 工具; grep, egrep, fgrep (不 支持正则表达式 搜索) sed :stream editor ,文本编辑工具; awk :Linux 上的实现gawk ,文本报告生成器
-
grep
grep: Global search REgular expression and Print out the line. 作用:文本搜索工具,根据用户指定的“模式”对目标文 本逐行进行匹配检查;打印匹配到的行; 模式:由正则表达式字符及文本字符所编写的过滤条件 grep [OPTIONS] PATTERN [FILE...] grep root /etc/passwd [root@localhost ~]# grep root /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin rooter:x:1010:1010:rpc:/home/rooter:/bin/bash grep "$USER" /etc/passwd [root@localhost ~]# grep "$USER" /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin rooter:x:1010:1010:rpc:/home/rooter:/bin/bash grep '$USER' /etc/passwd 单引号在这里是强引用 grep `whoami` /etc/passwd [root@localhost ~]# grep `whoami` /etc/passwd root:x:0:0:root:/root:/bin/bash operator:x:11:0:operator:/root:/sbin/nologin rooter:x:1010:1010:rpc:/home/rooter:/bin/bash
选项:
--color=auto: 对匹配到的文本着色显示; -v: 显示不能够被pattern 匹配到的行; [root@localhost ~]# grep -v UUID /etc/fstab # # /etc/fstab # Created by anaconda on Mon Jul 25 12:04:17 2016 # # Accessible filesystems, by reference, are maintained under '/dev/disk' # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info # -i: 忽略字符大小写 [root@localhost ~]# grep -i uuid /etc/fstab UUID=f4406f6a-e495-45a0-a85e-3b059c0d3130 / xfs defaults 0 0 UUID=7c25120e-2371-413d-b584-fdd695b96702 /boot xfs defaults 0 0 UUID=19470291-724c-4f01-b6e1-7109ad22be1b /usr xfs defaults 0 0 UUID=c3460309-9e8c-4037-8684-4c6bdcabbacb swap swap defaults 0 0 -n:显示匹配的行号 [root@localhost ~]# grep -ni uuid /etc/fstab 9:UUID=f4406f6a-e495-45a0-a85e-3b059c0d3130 / xfs defaults 0 0 10:UUID=7c25120e-2371-413d-b584-fdd695b96702 /boot xfs defaults 0 0 11:UUID=19470291-724c-4f01-b6e1-7109ad22be1b /usr xfs defaults 0 0 12:UUID=c3460309-9e8c-4037-8684-4c6bdcabbacb swap swap defaults 0 0 -c: 统计匹配的行数 [root@localhost ~]# grep -ci uuid /etc/fstab 4 -o: 仅显示匹配到的字符串; [root@localhost ~]# grep -o UUID /etc/fstab UUID UUID UUID UUID -q: 静默模式,不输出任何信息 -A # :after, 后#行 行 [root@localhost ~]# grep -nA3 root /etc/passwd 1:root:x:0:0:root:/root:/bin/bash 2-bin:x:1:1:bin:/bin:/sbin/nologin 3-daemon:x:2:2:daemon:/sbin:/sbin/nologin 4-adm:x:3:4:adm:/var/adm:/sbin/nologin -- 10:operator:x:11:0:operator:/root:/sbin/nologin 11-games:x:12:100:games:/usr/games:/sbin/nologin 12-ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin 13-nobody:x:99:99:Nobody:/:/sbin/nologin -B #: before, 前#行 [root@localhost ~]# grep -nB3 root /etc/passwd 1:root:x:0:0:root:/root:/bin/bash -- 7-shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 8-halt:x:7:0:halt:/sbin:/sbin/halt 9-mail:x:8:12:mail:/var/spool/mail:/sbin/nologin 10:operator:x:11:0:operator:/root:/sbin/nologin -C # :context, 前后各#行 [root@localhost ~]# grep -nC3 root /etc/passwd 1:root:x:0:0:root:/root:/bin/bash 2-bin:x:1:1:bin:/bin:/sbin/nologin 3-daemon:x:2:2:daemon:/sbin:/sbin/nologin 4-adm:x:3:4:adm:/var/adm:/sbin/nologin -- 7-shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown 8-halt:x:7:0:halt:/sbin:/sbin/halt 9-mail:x:8:12:mail:/var/spool/mail:/sbin/nologin 10:operator:x:11:0:operator:/root:/sbin/nologin 11-games:x:12:100:games:/usr/games:/sbin/nologin 12-ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin 13-nobody:x:99:99:Nobody:/:/sbin/nologin -e :实现多个选项间的逻辑or 关系 [root@localhost ~]# grep -n -e root -e bash /etc/passwd 1:root:x:0:0:root:/root:/bin/bash 10:operator:x:11:0:operator:/root:/sbin/nologin 38:mageedu:x:1000:1000:mageedu:/home/mageedu:/bin/bash 39:user1:x:1001:1001::/home/user1:/bin/bash 40:tom:x:1002:1002::/home/tom:/bin/bash 41:user2:x:1003:1003::/home/user2:/bin/bash -w :整行匹配整个单词 [root@localhost ~]# grep -w UUID /etc/fstab UUID=f4406f6a-e495-45a0-a85e-3b059c0d3130 / xfs defaults 0 0 UUID=7c25120e-2371-413d-b584-fdd695b96702 /boot xfs defaults 0 0 UUID=19470291-724c-4f01-b6e1-7109ad22be1b /usr xfs defaults 0 0 UUID=c3460309-9e8c-4037-8684-4c6bdcabbacb swap swap defaults 0 0 -E :使用ERE
正则表达式
REGEXP :由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能 程序支持:grep, vim, less,nginx等 分两类: 基本正则表达式:BRE 扩展正则表达式:ERE grep -E = egrep 正则表达式引擎: 采用不同算法,检查处理正则表达式的软件模块 PCRE(Perl Compatible Regular Expressions) 元字符分类:字符匹配、匹配次数、位置锚定、分组
基本正则表达式元字符
-
字符匹配:
. : 匹配任意单个字符; [] : 匹配指定范围内的任意单个字符 [^] :匹配指定范围外的任意单个字符 [:digit:] 、[:lower:] 、[:upper:] 、[:alpha:] 、[:alnum:] 、[:punct:] 、[:space:]
-
匹配次数:
用在要制定次数的字符后面,用于指定前面的字符要出现的次数 * :匹配前面的字符任意次,包括0次贪婪模式:尽可能长的匹配 .* :任意长度的任意字符 \? :匹配其前面的字符0 或1次 \+ :匹配其前面的字符至少1次 \{m\} :匹配前面的字符m次 \{m,n\} :匹配前面的字符至少m 次,至多n次 \{,n\} :匹配前面的字符至多n次 \{m,\} :匹配前面的字符至少m次
-
位置锚定
^ :行首锚定,用于模式的最左侧 [root@localhost ~]# grep ^root /etc/passwd root:x:0:0:root:/root:/bin/bash rooter:x:1010:1010:rpc:/home/rooter:/bin/bash $ :行尾锚定,用于模式的最右侧 [root@localhost ~]# grep bash$ /etc/passwd root:x:0:0:root:/root:/bin/bash mageedu:x:1000:1000:mageedu:/home/mageedu:/bin/bash user1:x:1001:1001::/home/user1:/bin/bash tom:x:1002:1002::/home/tom:/bin/bash user2:x:1003:1003::/home/user2:/bin/bash ^PATTERN$: 用于模式匹配整行 ^$: 空行 ^[[:space:]]*$ :空白行 \< 或 或 \b :词首锚定,用于单词模式的左侧 \> 或 或 \b :词尾锚定;用于单词模式的右侧 \<PATTERN\> :匹配整个单词
-
分组
\(\) :将一个或多个字符捆绑在一起,当作一个整体进行处理,如:\(root\)\+ 分组括号中的模式匹配到的内容会被正则表达式引擎记录于内部的变量中,这些变量的命名方式为: \1, \2, \3, ... \1: 从左侧起,第一个左括号以及与之匹配右括号之间的模式所匹配到 的 字符 实例: \(string1\+\(string2\)*\) \1: string1\+\(string2\)* \2: string2 后向引用:引用前面的分组括号中的模式所匹配字符(而非模式本身)
egrep及扩展的正则表达式
egrep = grep -E egrep [OPTIONS] PATTERN [FILE...] 扩展正则表达式的元字符: 字符匹配: . 任意单个字符 [] 指定范围的任意单个字符 [^] 不在指定范围内的任意单一字符 次数匹配: * :匹配前面字符任意次 ?: 0 或1次 + :1 次或多次 {m} :匹配m次 {m,n} :至少m ,至多n次 位置锚定: ^ : 行首 $ : 行尾 \<, \b : 语首 \>, \b : 语尾 分组: () 后向引用:\1, \2, ... 或者: a|b C|cat: C 或cat (C|c)at:Cat 或cat
原创文章,作者:dxkboke,如若转载,请注明出处:http://www.178linux.com/31256