分页: 1 / 1

sed的替换问题

发表于 : 2008-03-16 20:38
eexpress
☎ cat tmp
1
2
3
4
5
6
7
8
9
10
☎ sed -e '/5/{h;d}' -e '$x' tmp
1
2
3
4
6
7
8
9
5
找到匹配5的行,放到尾巴上。少了一行(如果文件尾巴有一空行,就对头)。其实是想放到文件第一行。
☎ sed -e '/5/{h;d}' -e '1x' tmp

2
3
4
6
7
8
9
10
更加不对。插入/追加行也试过。

:cry:
:cry:

发表于 : 2008-03-16 21:06
eexpress
spikerman iGoogle: sed -e '/5/{h;d}' -e '$G' tmp'
我是看晕了。G可以。现在剩下不tac,放到第一行的事情了。

发表于 : 2008-03-20 11:14
searland
1. 楼主为什么认为 sed -e '/5/{h;d}' -e '$x' tmp 后,结果最后需要一个空行呢。
2. sed执行时是line by line的吧,所以-e '1x' 在第一行放入pattern space的时候就执行,此时的holding buffer为空,所以将第一行换为空行。

发表于 : 2008-03-20 11:16
eexpress
只是一个大写错误拉。现在是确定了,不能前插入,只有追加。如果有办法,欢迎跟。

发表于 : 2008-03-29 14:43
baic
:o 学到了 :lol:
sed -e '/1/{h;d};/[234]/{H;d};/5/{G}' tmp

发表于 : 2008-04-01 20:10
5123
viewtopic.php?t=112618
遇到和楼主一样的问题,郁闷中