shell脚本学习(二十)——shell中常用的命令join和tr、xargs

1 join命令

join file1 file2    			#内连接:将两个文件中每列第一个字符相同的行合并(忽略不匹配的行)
join -a1 file1 file2			#显示左边文件中的所有记录(右边文件中没有匹配的不显示)
join -a2 file1 file2			#显示右边文件中的所有记录(左边文件中没有匹配的不显示)
join -a1 -a2 file1 file2		#全连接(显示左边和右边所有记录)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

-o:指定输出字段

join -o 1.1 file1 file2			#指定输出第一个文件的第一个字段
指定输出多个字段:
join -o 1.1 2.2 file1 file2 	#指定输出第一个文件的第一个字段和第二个文件的第二个字段

在这里插入图片描述

-t:指定分隔符

join -t ':' file3 file4		#以:为分隔符连接

在这里插入图片描述
在这里插入图片描述

-v 1:不匹配的行输出

join -v 1 -a1 -a2 file1 file2

在这里插入图片描述

2 tr命令

tr,translate的简写,这里用到的意思是转化,转变,转换。

参数说明
-c -C字符串替换,要求字符集为ASCII
-d删除字符
-s删除所有重复出现字符序列,只保留第一个(即将重复出现字符压缩为一个字符串)
-t删除第一字符集较第二字符集多出的字符
参数说明
[:digit:]所有数字
[:graph:]所有可打印字符,不包括空格
[:lower:]所有小写字符
[:upper:]所有大写字符
[:print:]所有可打印字符,包括空格
[:punct:]所有标点字符
[:space:]所有横向或纵向的空白
echo "HELLO BLACK MAMBA" | tr "A-Z" "a-z"       #将大写字母转换成小写字母
echo 12345 | tr '0-9' '987654321'				#将0-9的正常输出,转换为9-1的倒序,即1-8,2-7,3-6,4-5,5-4,6-3,7-2,8-1,9-0  所以这里的12345输出后就会变成87654
echo 87654 | tr '987654321' '0-9'   			#将刚刚设置的倒序,再转换为正常的0-9输出
echo 'hello 123 world 456' | tr -d '0-9'		#删除其中的数字
echo 'hello 123 world 456' | tr -d -c '0-9\n'	#表示不再'0-9'集合内的内容全删除
echo " 1   2   333333  h   e " | tr -s ' '		#表示使用空格来压缩文本内容,也可以说是用空格来调整文本的格式
echo westos | tr '[:lower:]' '[:upper:]'		#这里同样可以使用之前讲过的通配符号

在这里插入图片描述

3 xargs命令

  • xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具;
  • xargs可以将管道或标准输入数据转换成命令行参数,也能够从文件的输出中读取数据;
  • xargs也可以将单行或多行文本输入转换为其他格式(多行变单行,单行变多行);
  • xargs默认的命令是echo,这以为这通过管道传递给xargs的输入将会包含换行和空白,不过通过 xargs的处理,换行和空白将被空格取代.
find /sbin  -perm /0700 | xargs ls -l						#它能够捕捉一个命令的输出,然后传递给另外一个命令,由于很多命令不支持|管道来传递参数,而日常工作中有这个必要,所以就有了xargs命令
cat test.txt  | xargs										#对格式混乱的文本进行规范
cat test.txt  | xargs -n3									#指定文本每行4个字符输出
echo "nameXnameXnameXname" | xargs -dX						#删除字符X
echo "nameXnameXnameXname" | xargs -dX -n2					#删除字符X,并且指定每行2个字符输出
echo "one two three" | xargs mkdir							#将输入的数据,变换成命令mkdir的参数,创建one two three三个目录
echo "one two three" | xargs -p touch						#将输入的数据,变换成命令touch的参数,创建one two three三个文件,-p询问是否执行指定动作,输入yes才能够执行,即才会生成三个文件
echo "one two three" | xargs -t rm							#-t不询问 直接执行指定动作,即删除one two three这三个文件
find /etc/ -type f -print0 | xargs -0 ls					
cat tests | xargs -I name sh -c 'echo name;mkdir name'		#-I表示输入多个命令,表示将文本中的内容转换成命令的参数,这里的name就表示tests中的文件内容,这个可以随便命名

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值