Shell脚本第三篇


Shell脚本第三篇
 
01
#xargs 命令
02
 
03
#将多行输入转换成单行输出
04
cat example.txt | xargs 
05
 
06
#将单行输入转换多行输出
07
cat example.txt | xargs -n 3
08
 
09
#自定义分割符号 类似函数 PHP explode  JS split
10
echo "splitXsplitXsplitXsplitXsplitX" | xargs -d X
11
 
12
#结合使用
13
echo "splitXsplitXsplitXsplitXsplitX" | xargs -d X -n 2
14
 
15
#shell模式 模拟传递可变参数给shell脚本
16
#!/bin/bash
17
#file ceche.sh
18
echo $*'#'
19
 
20
echo args.txt
21
args1
22
args2
23
args3
24
 
25
cat args.txt | xargs -n 2 ./cecho.sh
26
args1 args2
27
args3 args4
28
 
29
# xargs有个选项 -I 可以提供上面这种形式的命令执行序列,我们可以用_I指定一个替换字符串,这个字符串在xargs扩展时会被替换掉。当 -I 与xargs结合使用时对于每个参数都会被执行一次
30
 
31
cat args.txt | xargs -I {} ./cecho.sh -p {} -l
32
 
33
# -I {} 指定了替换字符串,对于每一个命令参数,字符串{} 会被从stdin读取的参数所替换, 使用-i的时候,命令就似乎在一个循环中执行一样,如果有三个参数,那么命令会被执行3次,而 {} 在每次执行中都会被替换为相应的参数
34
 
35
#xargs 与find 结合
36
 
37
find . -type f -name "*.txt" -print | xargs rm -f  
38
#这条命令相当危险,我们无法预知find 找到的文件定界符是'\n' 还是' '  很多文件名中包含空格符,而xargs 很可能会误认为是他们的定界符,例如  hell text.txt 会被认为hell text.txt
39
 
40
#tr 命令
41
 
42
#它可以讲一组字符串变成另一组字符串,因而通常被称为转换命令
43
 
44
echo "HELLO" | tr 'A-Z' 'a-z'    # 把大写字母转小写
45
 
46
echo 12345 |  tr '0-9'  '9876543210'  #简单的一种加密方式  tr 支持自定义集合方式
47
 
48
echo 87654 | tr '987654321' '0-9'   #解密
49
 
50
# 用tr删除字符
51
echo 'Hello 123" | tr -d '0-9'   #删除0-9数字字符
52
 
53
#字符集补集
54
echo  hello 1 char 2 netxt 4 | tr -d -c '0-9 \n'  # 删除除 0-9 \n 以外的所有字符
55
 
56
#压缩字符 压缩连续的空白字符
57
echo " GNU is not   UNIX . recursive   right ? " | tr -s ' '
58
 
59
# 将文本中每一行数相加
60
cat file.txt
61
1
62
2
63
3
64
cat file.txt | echo $[ $(tr '\n'  '+' ) 0 ]
65
# 我们用+替代\n 符号,字符串变为  1+ 2+ 3 +
66
# 后面补 0  就是组成一个表达式
67
$ [ operation]   # 执行运算符,因此得到下面字符串
68
echo $ [ 1+ 2 + 3 + 0 ]
69
 
70
# tr 支持的字符类
71
alnum: 字母和数字
72
alpha: 字母
73
cntrl: 控制字符,非打印字符
74
digit: 数字
75
graph: 图形字符
76
lower 小写字母
77
print 可打印字符
78
punct 标点符号
79
space 空白字符
80
upper 大写字母
81
xdigit 十六进制字符
82
 
83
#使用方法
84
echo 'TESt'  | tr [:lower:] [:upper:]
 

相关内容

    暂无相关文章