shell文本处理-常用方法整理
1.替换文本中的字母:
echo `sed -i '1,5s/[a-z]//g' ./file`
输出结果:
file文件中的1到5行的所有字母都被替换为空字符
分析:
-i 表示直接处理文本
1,5s 表示文本的1到5行 (文本没有0行)
g 有g替换某行的每一个符合要求的字符,无g只替换第一个
1,5s/[a-z]//g 1到5行(s前不加数字表示所有行)/被替换字符/替换字符/(g全局替换,无g只替换第一个)
./file 文本路径
注意 ``不是单引号 是反引号 sed -i后的是单引号
2.在指定字符后增加文本内容:
cat ./test|sed 's/x:/&aaa/g'
输出结果:
x:aaa
分析:
x: 指定的字符
&aaa &表示在x:后加上aaa &代表x:的位置
3.在指定字符串前增加文本内容:
cat ./test|sed 's/x:/aaa&/g'
输出结果:
aaax:
分析:
x: 指定的字符
aaa& &表示在x:前加上aaa &代表x:的位置
4.提取指定字符串:
echo "libgcc-4.8.5-4.h5.x86_64.rpm" | sed -r 's/libgcc-([0-9]+\.[0-9]+.*)\.rpm/\1/g'
输出结果:
4.8.5-4.h5.x86_64
匹配的内容为以4.8开头(包含4.8)-----------------结尾到.rpm之前的内容
分析:
-r 使用扩展正则表达式(如果不加-r会报错)
\1 反向引用前边匹配的组(就是匹配()里的内容)
+ 匹配[0-9]的内容重复一次或多次
* 匹配[0-9]的内容0次或多次
\ 转义字符
浙公网安备 33010602011771号