1)
cat file
c-h-i-n-a -unix
我只想替换空格前面的字符中的 "-" 符号:
china -unix
-
sed -r ':a;s/-(.* .*)/\1/;ta' file
[解析]
这个原理就是利用了 t 判断是否前面替换成功,而后跳转标签,关键就是那个空格的分界线。
2)
cat file
net123 aaa bbb net123
net456 ccc ddd net456
删除每行的重复字符串只保留第一个:
net123 aaa bbb
net456 ccc ddd
-
sed ':1 s/\(.\+\) \(.*\)\1/\1 \2/;t1' file
[解析]
这个原理也是一样的,利用 t 来判断是否替换成功。
-
awk '{for(i=1;i<=NF;i++)if(a[$i]++)$i="";NF+=0;delete a}1' file
[解析]
awk利用数组自加作为条件判断是否已经出现过,条件成立就置空。
3)
把字符串 01/02/03/t1.txt 拆分成 01,01/02,01/02/03,01/02/03/t1.txt
-
sed ':1 s#^\([^,]\+\)/\(.*\)#\1,\1/\2#;t1'
4)
千分位
-
echo "1234"|sed -r ':1 s/(.*\B)(\w{3})/\1,\2/;t1'
-
echo "1234"|sed ':1 s/\B\w\{3\}\b/,&/;t1'
阅读(5521) | 评论(1) | 转发(1) |