目录
(1)概念
tr主要用于转换或删除文件中的字符。
(2)语法
语法:tr [-d/-c/-s] [字符串1] [字符串2] 文件名
注:字符串1用于查询,字符串2用于处理各种转换
(3)常用选项
表1 tr常用选项
| 选项 | 功能 |
| -c | 反选设定字符;用字符串1中字符集的补集替换此字符集,要求字符集为ASCII |
| -d | 删除字符串1中所有输入字符 |
| -s | 缩减连续重复字符成指定的单个字符,最常用的是 tr -s " ",表示把说有字符串中出现的所有连续空格替换成一个 |
(1)概念
find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部
注:xargs要处理的文件如果不是在结尾,需要加上 -i这个参数;否则就不用加-i参数
(2)常用选项
xargs的默认命令是echo,空格是默认定界符。 默认替换符号是{}
表2 xargs常用选项
| 选项 | 功能 |
| -n | 次数,将xargs生成的命令行参数,每次传递几个参数给其后面的命令执行 |
| -d | 自定义定界符 |
| -p | 会提示让你确认是否执行后面的命令,y执行,n不执行 |
(1)将字符串中所有连续的\n转换成一个\n
- [root@centos2 /]# echo -e "1\n\n2\n\n3" | tr -s "\n"
- 1
- 2
- 3
同时进行替换多个字符:把字符串中出现的连续的空格oa进行转换成一个空格oa
- [root@centos2 /]# echo "hellooo shellaaa " | tr -s "[ oa]"
- hello shella
(2)删除字符串中所有的\n
- [root@centos2 /]# echo -e "1\n\n2\n\n3" | tr -d "\n"
- 123[root@centos2 /]#
(3)将字符串中的某个字符转换成另一个字符,也可以多个字符同时转换
- [root@centos2 /]# echo "hello" | tr "h" "H"
- Hello
- [root@centos2 /]# echo "hello" | tr "hl" "HL"
- HeLLo
可以边把连续的字符转成一个字符再进行转换成另一个字符
- [root@centos2 /]# echo "hello" | tr -s "l" "L"
- heLo
- [root@centos2 /]# echo "2023 06 01" |tr -s ' ' '-'
- 2023-06-01
(4)过滤出只出现某些字符:-d删除 -c 反选
过滤出全是数字的,最后不换行
- [root@centos2 /]# echo "abcd1234567" | tr -dc "0-9"
- 1234567[root@centos2 /]#
过滤出全是小写字母的,最后不换行
- [root@centos2 /]# echo "abcd1234567" | tr -dc "a-z"
- abcd[root@centos2 /]#
过滤出全是大写字母的,最后不换行
- [root@centos2 /]# echo "ABCDabcd1234567" | tr -dc "A-Z"
- ABCD[root@centos2 /]#
(1)多行内容的单输出且每行3个
- [root@centos2 /]# cat /etc/passwd | xargs -n 3
- root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin
- adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync
- shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
- operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP
- User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin systemd-network:x:192:192:systemd
- Network Management:/:/sbin/nologin dbus:x:81:81:System
- message bus:/:/sbin/nologin polkitd:x:999:997:User
- for polkitd:/:/sbin/nologin abrt:x:173:173::/etc/abrt:/sbin/nologin
- libstoragemgmt:x:998:995:daemon account for
- libstoragemgmt:/var/run/lsm:/sbin/nologin rpc:x:32:32:Rpcbind Daemon:/var/lib/rpcbind:/sbin/nologin
- colord:x:997:994:User for colord:/var/lib/colord:/sbin/nologin
- ……
(2)查找某个目下录下的普通文件,然后使用xargs命令来测试它们分别属于哪类文件
- [root@centos2 /]# find /opt -user root -type f | xargs file {}
- {}: cannot open (No such file or directory)
- /opt/host.txt: ASCII text
- /opt/file.txt: ASCII text
(3)查找文件并复制到别的地方find命令就可以完成:复制到某个目录
- [root@centos2 /]# find /opt -type f -exec cp -a {} /data2 \;
- [root@centos2 /]# ls /data2
- file.txt host.txt
使用find+xargs命令完成:意思是复制到这个文件
- [root@centos2 opt]# find /opt/*.sh -type f | xargs -i cp {} /data2
- [root@centos2 opt]# ls /data2
- a.sh
(4)过滤出某个目录下的文件中含有root字符
- [root@centos2 opt]# find /etc/passwd -type f | xargs grep "root"
- root:x:0:0:root:/root:/bin/bash
- operator:x:11:0:operator:/root:/sbin/nologin
(5)xargs的-p参数的使用:会提示是否执行后面的命令
y为是,n为否
- [root@centos2 opt]# find /opt/*.sh -type f | xargs -i -p cp {} /data2
- cp /opt/a.sh /data2 ?...y
- [root@centos2 opt]# ls /data2
- a.sh