通常在学习或工作过程中,有时需要对处理的数据进行字符替换;要大写改为小写,或将;改为:还有如何将两篇信息整合成一篇信息就需要用到以下命令。
- tr 主要用于删除文件中控制字符或进行字符转换;
参数:
-d 删除字符串1中所有输入字符。
-s 删除所有重复出现字符序列,只保留第一个;即将重复出现字符串压缩为一个字符串。
样例:
(1) ifconfig | tr a-z A-Z
后面’a-z’ ‘A-Z’ ;[a-z] [A-Z] ;’[a-z]’ ‘[A-Z]’ 都可以执行
ENS33: FLAGS=4163<UP,BROADCAST,RUNNING,MULTICAST> MTU 1500
INET 192.168.153.128 NETMASK 255.255.255.0 BROADCAST 192.168.153.255
INET6 FE80::73F8:EE50:91F6:FE08 PREFIXLEN 64 SCOPEID 0X20
ETHER 00:0C:29:58:9C:11 TXQUEUELEN 1000 (ETHERNET)
RX PACKETS 1334 BYTES 118927 (116.1 KIB)
RX ERRORS 0 DROPPED 0 OVERRUNS 0 FRAME 0
… … …
(2) ifconfig | tr -s " "
删除ifconfig中重复出现的空格
(3) cat /etc/passwd | tr -d “:”
删除/etc/passwd 输出信息的:符号
2.col 过滤控制字符
参数:
-x 将tab键转换成对等的空格键
-b 在文字内有反斜杠(/)时,仅保留反斜杠最后接的那个字符
(1) cat -A /etc/man_db.conf //会看到许多^I 的符号,那就是tab键
cat /etc/man_db.conf | col -x | cat -A //会将tab键转换成空格
3.join 处理两个文件之间的数据
参数:
-t join默认以空格符来分隔数据,并且对比“第一个字段的数据”;如果两个文件相同,则将两条数据连成一行,且第一个字段放在第一个。
-i 忽略大小写的差异
-1 代表第一个文件要用那个字段来分析
-2 代表第二个文件要用那个字段来分析
(1) head -n 3 /etc/passwd /etc/shadow
join -t “:” /etc/passwd /etc/shadow
通过上面操作我们可以看到将两个文件的第一字段(用:分隔的)相同着整合成一行
(2)我们知道/etc/passwd 的第四字段是GID 而/etc/group第三字段是如何整合两个文件。
head -n 3 /etc/passwd /etc/group
join -t “:” -1 4 /etc/passwd -2 3 /etc/group
可以看到相同字段被移到最前面了,而后将两个文件整合到了一起
4.paste 相对于join来言,paste直接将两行粘在一起,且中间默认以[tab]隔开
参数:
-d 后面可接分隔字符,默认以[tab]隔开
(1)将/etc/passwd 与 /etc/shadow同一行黏贴在一起
paste /etc/passwd /etc/shadow
5.expand 就是将[tab]按键转换成空格键
参数:
-t 后面可以接数字
(1) grep “^MANPATH” /etc/man_db.conf | head -n 3 | cat -A
grep “^MANPATH” /etc/man_db.conf | head -n 3 | expand -t 6 - | cat -A