Chinaunix
标题:
sed 删除特定字符后如何缩进到上一行
[打印本页]
作者:
situxiaoquan
时间:
2011-09-13 14:26
标题:
sed 删除特定字符后如何缩进到上一行
本帖最后由 situxiaoquan 于 2011-09-13 14:37 编辑
文件内容如下:
42 N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=E6=93=8D=E7=9B=9B=E7=AB=
43 =A0
44 TEL;CELL;HOME;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:1390806228=
45 8
46 N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=E6=9B=B9=E5=85=89=
47 =E5=83
48 TEL;CELL;HOME;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:+861390803=
49 0504
50 N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;=E6=9B=B9=E6=B0=B8=E6=
51 =AD=A3
52 TEL;VOICE;HOME;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:010658656=
53 70
要得到的结果是:
42 N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=E6=93=8D=E7=9B=9B=E7=AB=A0
44 TEL;CELL;HOME;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:13908062288
46 N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=E6=9B=B9=E5=85=89=E5=83
48 TEL;CELL;HOME;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:+8613908030504
50 N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;=E6=9B=B9=E6=B0=B8=E6=AD=A3
52 TEL;VOICE;HOME;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:01065865670
需要处理两个地方:
1,将 =开头的行的=号去掉再追加到上一行=后面
2,将只有数字的行缩进到上一行号码=后面,并将上一行等号去掉
作者:
liion631818
时间:
2011-09-13 15:24
本帖最后由 liion631818 于 2011-09-13 15:30 编辑
$ awk '{if(NR%2!=0){first_line = $0;next;}if($2~/^=/)print first_line substr($2, 2);if
($2~/^[0-9]+$/)print substr(first_line, 1, length(first_line)-1) $2;}' ufile
42 N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=E6=93=8D=E7=9B=9B=E7=AB=A0
44 TEL;CELL;HOME;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:13908062288
46 N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=E6=9B=B9=E5=85=89=E5=83
48 TEL;CELL;HOME;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:+8613908030504
50 N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;=E6=9B=B9=E6=B0=B8=E6=AD=A3
52 TEL;VOICE;HOME;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:01065865670
复制代码
作者:
liion631818
时间:
2011-09-13 15:27
sed 'N;s/=\n.* //' ufile
42 N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=E6=93=8D=E7=9B=9B=E7=AB
44 TEL;CELL;HOME;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:13908062288
46 N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:=E6=9B=B9=E5=85=89=E5=83
48 TEL;CELL;HOME;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:+8613908030504
50 N;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:;=E6=9B=B9=E6=B0=B8=E6=AD=A3
52 TEL;VOICE;HOME;CHARSET=UTF-8;ENCODING=QUOTED-PRINTABLE:01065865670
复制代码
作者:
mpstat
时间:
2011-09-13 16:20
sed ':a;$!{N;ba};s#\n=\(.*\)#\1#g; s#=\n\([0-9]*\)#\1#g' file
复制代码
作者:
situxiaoquan
时间:
2011-09-13 17:16
回复
3#
liion631818
您使用的是linux 系统吗?我用的是suse9怎么运行得不到结果呢?
作者:
liion631818
时间:
2011-09-13 17:25
回复
5#
situxiaoquan
哦,出的什么错?
2楼和3楼的不都行?
作者:
mpstat
时间:
2011-09-13 20:13
回复 liion631818
您使用的是linux 系统吗?我用的是suse9怎么运行得不到结果呢?
situxiaoquan 发表于 2011-09-13 17:16
你前面那第一列数字不是你文本文件里的吧?
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2