sed正则经典案例(二)
###修改登记信息格式
已知文本内容如下:
[[email protected] oldboy]# cat 2.txt 张三--1995/04/12--186-1233-4324--5004132131231231231 李四--1993/05/20--175-4323-2343--4423432423413132133 王五--1989/12/21--150-3123-3123--4324234121231231242
请替换成如下结果:
张三 19950412 18612334324 5004132131231231231 李四 19930520 17543232343 4423432423413132133 王五 19891221 15031233123 4324234121231231242
解答:
sed+替换
sed -nr ‘1,3s#--#\n#g;s#[/-]##gp‘ 2.txt ===[]或 sed -r ‘s#-{2}#\n#g;s#[/-]##g‘ 2.txt sed -nr ‘1,3s#-{2}#\n#g;s#[/-]##gp‘ 2.txt ===[]或 sed -nr ‘1,3s#--#\n#g;s#/|-##gp‘ 2.txt ===‘|‘或 sed -re ‘s#--#\n#g‘ -e ‘1,3s#/|-##g‘ 2.txt ===‘|’或 sed -r ‘s#-{2}# #g;s#/|-##g‘ 2.txt|xargs -n1 不用换成空,直接换成换行符‘\n’
sed+反向引用
sed -r ‘s#(.*)--(.*)/(.*)/(.*)--(.*)-(.*)-(.*)--(.*)#\1\n\2\3\4\n\5\6\7\n\8#‘ lianxi.txt awk切割输出+sed替换 awk -F"[-]+" ‘{print $1"\n" $2"\n" $3 $4 $5"\n" $6}‘ 2.txt|sed ‘s#/##g‘ awk -F"[-/]+" ‘{print $1"\n" $2$3$4 "\n" $5$6$7"\n" $8}‘ 2.txt awk -F "[-/]+" ‘{print $1,$2$3$4,$5$6$7,$8}‘ 2.txt|xargs -n1 awk -F"--" ‘{for(i=1;i<=NF;i++){gsub(/\/|-/,"",$i);print $i}}‘ 2.txt ===gsub替换函数
时间: 2024-10-13 11:40:54