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]