awk 找出带空格的字符串?

niansanlang
awk 找出带空格的字符串?

如果找一个字符串,前后都有空格, 如    abc    。
用awk怎么找呢?

blackold
回复 #1 niansanlang 的帖子

/ abc /

无声无息
如果有多个空格,而你只想找出一个空格的情况,就要用正则

niansanlang
[quote]原帖由 [i]blackold[/i] 于 2008-6-30 18:19 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8705037&ptid=1184845][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
/ abc / [/quote]
这个方法不行啊,输出文件是空的

walkerxk
awk不知道,grep的话可以用grep -o ' /+abc /+'

无声无息
回复 #4 niansanlang 的帖子

将你的要处理的文件贴出来看看

blackold
回复 #4 niansanlang 的帖子

可能LZ的空白根本不是space,而是其它空白字符。sed -n l urfile 看看。

niansanlang
[quote]原帖由 [i]无声无息[/i] 于 2008-6-30 21:25 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8705958&ptid=1184845][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
将你的要处理的文件贴出来看看 [/quote]
100  1.000000E-01        47
-4.449749E+07  5.320917E+02 -4.472429E+07  1.149315E+06 -4.587361E+07
  0.000000E+00  0.000000E+00  0.000000E+00  0.000000E+00 -4.460000E+07
  0.000000E+00  6.988630E+05 -4.517597E+07  4.587483E+07  0.000000E+00
  0.000000E+00  0.000000E+00  0.000000E+00  4.525154E+03  0.000000E+00
  0.000000E+00  0.000000E+00  9.000000E+01  9.000000E+01  9.000000E+01
  0.000000E+00 [color=Red]-3.261477E+00[/color]  0.000000E+00  0.000000E+00 -2.253711E+00
-1.091084E+00 -4.863579E-01 -1.091084E+00  1.325109E-01 -1.667489E+00
  150  1.500000E-01        47
-4.451351E+07  4.673723E+02 -4.471404E+07  1.172068E+06 -4.588611E+07
  0.000000E+00  0.000000E+00  0.000000E+00  0.000000E+00 -4.451713E+07
  0.000000E+00  3.506218E+05 -4.553905E+07  4.588967E+07  0.000000E+00
  0.000000E+00  0.000000E+00  0.000000E+00  4.507528E+03  0.000000E+00
  0.000000E+00  0.000000E+00  9.000000E+01  9.000000E+01  9.000000E+01
  0.000000E+00  [color=Red]3.142367E-01[/color]  0.000000E+00  0.000000E+00  1.239168E+00

就是找出所有画红线的数字。什么方法都行。

blackold
回复 #8 niansanlang 的帖子

服了你了,红色部分与abc有啥关系。
grep  -Eo '/-?3/.[1,2][0-9]{5}E.[0-9]{2}' urfile

[[i] 本帖最后由 blackold 于 2008-6-30 22:03 编辑 [/i]]

寂寞烈火
看不出啥规律

无声无息
好像问题和一开始不一样了,谁能看出规律?

walkerxk
[quote]原帖由 [i]blackold[/i] 于 2008-6-30 21:54 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8706065&ptid=1184845][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
服了你了,红色部分与abc有啥关系。
grep  -Eo '/-?3/.[1,2][0-9]{5}E.[0-9]{2}' urfile [/quote]
真葱白你,黑哥,你是怎么看出规律的?

walkerxk
感觉黑哥的规律太牵强了,还是我的好:echo -e '-3.261477E+00/n3.142367E-01'[img]http://bbs.chinaunix.net/images/smilies/icon_mrgreen.gif[/img]
大学里面的考试我就这么干的,源码和二进制文件完全对不上。

niansanlang
[quote]原帖由 [i]blackold[/i] 于 2008-6-30 21:54 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8706065&ptid=1184845][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
服了你了,红色部分与abc有啥关系。
grep  -Eo '/-?3/.[1,2][0-9]{5}E.[0-9]{2}' urfile [/quote]
abc就是个代名词,想找到 47 那下面的第几行,第几列啊

niansanlang
[quote]原帖由 [i]walkerxk[/i] 于 2008-6-30 23:06 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8706224&ptid=1184845][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
感觉黑哥的规律太牵强了,还是我的好:echo -e '-3.261477E+00/n3.142367E-01'http://bbs.chinaunix.net/images/smilies/icon_mrgreen.gif
大学里面的考试我就这么干的,源码和二进制文件完全对不上。 [/quote]
这只是前面的2段,共有1000多段,差异很大的

walkerxk
[quote]原帖由 [i]niansanlang[/i] 于 2008-6-30 23:07 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8706227&ptid=1184845][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]

abc就是个代名词,想找到 47 那下面的第几行,第几列啊 [/quote]
拜托,那你说清楚啊,不然我们怎么知道什么规律?

walkerxk
sed -n '/ 47/{n;n;n;n;n;n;p;}'|sed 's/ /+/ /g'|cut -d/  -f3,应该可以了,我看看能不能简化。
0.1alpha版:sed -n '/ 47/{n;n;n;n;n;n;p;}'|awk '{print $2}',其中awk是偷来的。
完了,beta版憋不出来了,谁能把n;n;n;n;n;n;p;改一下,或者把-n去掉?

[[i] 本帖最后由 walkerxk 于 2008-6-30 23:43 编辑 [/i]]

err7dd
try:

awk '{ if(NF==3&&$3=="47")n=0;else if(++n==6)print $2 }' file

walkerxk
[quote]原帖由 [i]err7dd[/i] 于 2008-6-30 23:34 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8706431&ptid=1184845][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]
awk '{ if(NF==3&&$3=="47")n=0;else if(++n==6)print $2 }' file [/quote]
不错,比我的运行速度快,但是我怎么觉得awk就是if+for+cut?

blackold
[quote]原帖由 [i]walkerxk[/i] 于 2008-6-30 23:01 发表 [url=http://bbs.chinaunix.net/redirect.php?goto=findpost&pid=8706203&ptid=1184845][img]http://bbs.chinaunix.net/images/common/back.gif[/img][/url]

真葱白你,黑哥,你是怎么看出规律的? [/quote]
[img]http://bbs.chinaunix.net/images/smilies/icon_mrgreen.gif[/img]
无办法,被LZ逼的。
try:
[code]$ awk 'BEGIN { RS =" 47/n"} NR > 1 {print $27}' urfile[/code]