免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: wiwi
打印 上一主题 下一主题

求 :文本行合并 [复制链接]

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
11 [报告]
发表于 2005-12-04 15:45 |只看该作者
原帖由 yuyuyou 于 2005-12-4 15:35 发表
烈火兄:
LZ说要得到
222###dre###rrrrr#ffff
777###rrr###444
888###rrr###5455

不要3和其他的。


dbcat的xargs不知道怎么用的?
[root@localhost shell_200512]# sed -n  -e '/#/!=' err.txt|xargs ...

哦,我理解有误

论坛徽章:
0
12 [报告]
发表于 2005-12-04 15:51 |只看该作者
呵呵。
不过烈火兄的方法很不错,小弟也学会了。

继续等待烈火兄的。。。。。。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
13 [报告]
发表于 2005-12-04 16:32 |只看该作者
原帖由 yuyuyou 于 2005-12-4 15:51 发表
呵呵。
不过烈火兄的方法很不错,小弟也学会了。

继续等待烈火兄的。。。。。。

呵呵,还是 等版主出招吧

论坛徽章:
0
14 [报告]
发表于 2005-12-04 18:33 |只看该作者
原帖由 yuyuyou 于 2005-12-4 15:35 发表
烈火兄:
LZ说要得到
222###dre###rrrrr#ffff
777###rrr###444
888###rrr###5455

不要3和其他的。


dbcat的xargs不知道怎么用的?
[root@localhost shell_200512]# sed -n  -e '/#/!=' err.txt|xargs ...





yuyuyou 太可爱了 ^_^

方法:

First,find the rows we dont want to print.
  1. $ cat file
  2. 111###bbb###eeeee###rrrrr
  3. yeitqryrt
  4. twhy

  5. ejyh


  6. 222###dre###rrrrr#ffff
  7. 333###err###eeett###

  8. 444###eerr###ffff


  9. eryt
  10. 555###rrr###rrr#rrrr
  11. 666
  12. 777###rrr###444
  13. 888###rrr###5455
  14. $  sed -n '/#/!=' file|xargs -i echo -e "{}\n{}-1" |bc|sort -n|uniq
  15. 1
  16. 2
  17. 3
  18. 4
  19. 5
  20. 6
  21. 7
  22. 9
  23. 10
  24. 11
  25. 12
  26. 13
  27. 14
  28. 15
  29. 16
复制代码


Second,change these numbers into AWK patten
--> awk 'NR!=1&&NR!=2&&....'

  1. ]
  2. $sed -n '/#/!=' file|xargs -i echo -e "{}\n{}-1" |bc|sort -n|uniq|sed 's/1/NR!=&/;:t;N;s/\n/\&\&NR!=/;bt'

  3. NR!=1&&NR!=2&&NR!=3&&NR!=4&&NR!=5&&NR!=6&&NR!=7&&NR!=9&&NR!=10&&NR!=11&&NR!=12&&NR!=13&&NR!=14&&NR!=15&&NR!=16
复制代码

Third,Use xargs to pass the result to awk


  1. ..... | xargs -i awk '{}' file
复制代码

不知解释清楚了没..........
有点笨

ps:
About Sed :
Sed patten space and hold space

About xargs :
shell基础二:查找技巧,find及xargs的使用
xargs 如何使用?
xargs使用误区

论坛徽章:
0
15 [报告]
发表于 2005-12-05 11:10 |只看该作者
原帖由 dbcat 于 2005-12-4 18:33 发表





yuyuyou 太可爱了 ^_^

方法:

First,find the rows we dont want to print.
[code]$ cat file
111###bbb###eeeee###rrrrr
yeitqryrt
twhy

ejyh


222###dre###rrrrr#ffff
...




多谢dbcat的详细解释!无以为报。。。。

你好聪明啊,偶快笨死了。。。



你已经解释的很清楚了,但是:

Second,change these numbers into AWK patten
--> awk 'NR!=1&&NR!=2&&....'

$sed -n '/#/!=' file|xargs -i echo -e "{}\n{}-1" |bc|sort -n|uniq|sed 's/1/NR!=&/;:t;N;s/\n/\&\&NR!=/;bt'

NR!=1&&NR!=2&&NR!=3&&NR!=4&&NR!=5&&NR!=6&&NR!=7&&NR!=9&&NR!=10&&NR!=11&&NR!=12&&NR!=13&&NR!=14&&NR!=15&&NR!=16



你这步还没用到awk吧,好象,全是sed。

???

[ 本帖最后由 yuyuyou 于 2005-12-5 11:11 编辑 ]

论坛徽章:
0
16 [报告]
发表于 2005-12-05 11:13 |只看该作者
AWK patten ?

论坛徽章:
0
17 [报告]
发表于 2005-12-05 11:55 |只看该作者
别客气 ..

原帖由 yuyuyou 于 2005-12-5 11:13 发表
AWK patten ?


是的啊...

echo "NR!=1&&NR!=2"|xargs -i awk '{}' file 等价于awk 'NR!=1&&NR!=2' file

不打印第一二行阿..

论坛徽章:
0
18 [报告]
发表于 2005-12-06 02:09 |只看该作者
谢谢!明白了。

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
19 [报告]
发表于 2005-12-06 11:58 |只看该作者
有意思的问题!试试这行sed:
  1. sed -ne '/###/{x;/./p;${g;p};b;};s/.*//;h'
复制代码

论坛徽章:
0
20 [报告]
发表于 2005-12-06 13:12 |只看该作者
啧啧,woodie

[root@localhost shell_200512]# sed -ne '/###/{x;/./p;${g;p};b;};s/.*//;h' err.txt
222###dre###rrrrr#ffff
777###rrr###444
888###rrr###5455

再研究下sed。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP