1. 程式人生 > >sed正則經典案例(二)

sed正則經典案例(二)

sed正則


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替換函數



sed正則經典案例(二)