怎样替换一行的最后几个字符和换行符为空?
- >cat a.log
- a abc
- b abc
- c
- abc
- d abc
- e abc
-
- 希望输出:
-
- >cat a.log
- a b c
- d e
有没有其它的方法 ?
作者: ljt2k 发布时间: 2011-05-30
sed ':a;/abc/{N;s/abc\n//g;ta}'
作者: wtuter 发布时间: 2011-05-30
- awk '1' RS="abc\n" ORS=
作者: yinyuemi 发布时间: 2011-05-30
awk '/abc$/{sub(/abc$/,"");printf $0;next}1' file
作者: ywlscpl 发布时间: 2011-05-30
作者: louis_ly 发布时间: 2011-05-30
- >awk '1' RS="abc\n" ORS="" a.log
- bc
- b bc
- c
- bc
- d bc
操作系统版本:
>uname -a
AIX DRCBP2 3 5 00C1CBD54C00
作者: ljt2k 发布时间: 2011-05-30
sed ':a;/abc/{N;s/abc\n//g;ta}'
wtuter 发表于 2011-05-30 12:10
报错了:
- > sed ':a;/abc/{N;s/abc\n//g;ta}' a.log
- sed: 0602-417 The label :a;/abc/{N;s/abc\n//g;ta} is greater than eight characters.
>uname -a
AIX DRCBP2 3 5 00C1CBD54C00
作者: ljt2k 发布时间: 2011-05-30
louis_ly 发表于 2011-05-30 13:01
这个应该是不行的,因为sed本身就是按行的处理的;
sed有个N命令,是支持多行操作,但是好像是两行一次,所以要循环;
上面兄弟提供了一个循环的,但是执行报错了,你可以看给他的回复。
作者: ljt2k 发布时间: 2011-05-30
awk '/abc$/{sub(/abc$/,"");printf $0;next}1' file
ywlscpl 发表于 2011-05-30 12:43
多谢,这个可以,请教一下,最后那个1是什么作用?
作者: ljt2k 发布时间: 2011-05-30
1就是1{print},{print}这个默认的action可以省略写
作者: ywlscpl 发布时间: 2011-05-30