「Shell」 string 操作
1 文本分割
1.1 正则
没有空格
#!/bin/bash
var=’1,2,3,4,5’
var=${var//,/ } # 将 var 中的,替换为空格
for element in $var
do
echo $element
done
有空格
echo 'mark:x:0:0:this is a test user:/var/mark:nologin' |cut -d ":" -f i # 输出第 i 个字符
1.2 cut
按字符-c
,字节-b
或字段-f
(此时要使用 -d
指定分割符,默认是 tab键)分割文本;最后跟索引(i、i-、i-j、-j);
-s
是在使用 -f
时,不输出没有分割符的行;
2 文件内容处理
2.1 替换
-e 输出到屏幕,-i 替换原文件,/ 替换地一个, /g 替换所有*
sed -e 's/old/new/' myfile # 替换第一个 old
sed -i 's/old/new/g' `grep old -rl --include="m*" ./` # 处理所有 m 开头且包含 old 的文件
附录
A 参考资料
B 代码示例
不定长字符串分割
#!/bin/bash
user=’mark:x:0:0:this is a test user:/var/mark:nologin’
i=1
while((1==1))
do
split=`echo $user|cut -d ":" -f$i`
if [ "$split" != "" ]
then
((i++))
echo $split
else
break
fi
done
Comments