Chinaunix
标题:
请大神进来看看错在哪里了?
[打印本页]
作者:
bmne
时间:
2016-07-23 07:08
标题:
请大神进来看看错在哪里了?
awk '/^[^\s+]+\s+[^\s+]+$/'
这些正确(能提取):
003163.om 6651
232098m 6892
42986co 43136
jgo.m 40931
90499.o gji789
678.q.o aoe12.
022149q.c 16203
1624@1m 122
i_4_u_25@.c,s05
mi_9@3.o,saci
lo14@6.o,.hae
ju@1.m j4jun
ty626.om ao09
kmk_08@6.om kik0
iag@13.m 8105
复制代码
我的问题:
为什么下面这些就不正确呢?(代码对它没用,提取不出来)
xin_ling_shi_zhe 156
christinaniuwenting 4826
wsbbh 1278
ghbfg sckw
复制代码
2.jpg
(12.69 KB, 下载次数: 76)
下载附件
2016-07-23 07:07 上传
请大神指导。谢谢!
作者:
Herowinter
时间:
2016-07-23 07:45
本帖最后由 Herowinter 于 2016-07-23 11:23 编辑
回复
1#
bmne
黑哥:在[]内[\s]相当于 [ s ]
改成这样
awk '/^[^[:space:]]+[[:space:]]+[^[:space:]]+$/' urfile
复制代码
可以把不是空白字符开始的列数为2个行取出来;
如果要取出“ xin_ling_shi_zhe 156”这种空白字符开始的行,要这样
awk '/^[[:space:]]*[^[:space:]]+[[:space:]]+[^[:space:]]+$/' urfile
复制代码
作者:
bmne
时间:
2016-07-23 07:54
回复
2#
Herowinter
谢谢大神
本来想直接找你,又怕你忙,所以不好意思张口
就直接发出求助帖子了。搜索、学习很长时间,没找到原因
作者:
bmne
时间:
2016-07-23 07:58
回复
2#
Herowinter
大神,版本老吗?
awk --version
GNU awk 4.1.3, API: 1.1 (GNU MPFR 3.1.4, GNU MP 6.1.0)
作者:
bmne
时间:
2016-07-23 08:10
回复
2#
Herowinter
大神
还是版本的问题?取反怎表示?
不行的这样 awk '!/^[^[:space:]]+\s+[^[:space:]]+$/'
作者:
Herowinter
时间:
2016-07-23 08:24
本帖最后由 Herowinter 于 2016-07-23 08:26 编辑
回复
5#
bmne
这样可以吗?
awk '!/^[^[:space:]]+[[:space:]]+[^[:space:]]+$/' urfile
复制代码
作者:
bmne
时间:
2016-07-23 08:31
本帖最后由 bmne 于 2016-07-23 08:32 编辑
回复
6#
Herowinter
可以运行,但,行首有空格的也提取出来了(应该是不提取出来才正确)
是我的版本的问题? 这样取反才对 awk '/^[^[:space:]]+[[:space:]]+[^[:space:]]+$/'
作者:
bmne
时间:
2016-07-23 10:17
回复
2#
Herowinter
请问这个管道怎么用?
awk '/^[[:space:]]*[^[:space:]]+[[:space:]]+[^[:space:]]+$/'|awk '/^[^,]+,[^,]+$/' 这样不行
作者:
Herowinter
时间:
2016-07-23 10:30
回复
8#
bmne
awk '/^[[:space:]]*[^[:space:]]+[[:space:]]+[^[:space:]]+$/ && /^[^,]+,[^,]+$/'
复制代码
作者:
bmne
时间:
2016-07-23 10:34
回复
9#
Herowinter
谢谢。这个有难度,不会
作者:
blackold
时间:
2016-07-23 10:40
不是版本问题。
在[]内[\s]相当于 [s]
作者:
bmne
时间:
2016-07-23 10:43
回复
9#
Herowinter
大神,这样不行
单独能出结果。管道不行。不知道哪里出问题了
作者:
bmne
时间:
2016-07-23 10:44
本帖最后由 bmne 于 2016-07-23 10:53 编辑
回复
11#
blackold
大神休息来了。感谢
试了下。但,不会表达 awk '/^[^\\s+]+\\s+[^\\s+]+$/'
作者:
blackold
时间:
2016-07-23 10:55
回复
13#
bmne
你想干吗?
作者:
bmne
时间:
2016-07-23 10:58
回复
14#
blackold
这个不能用啊。请修改一下 awk '/^[^\s+]+\s+[^\s+]+$/'
不会我
作者:
blackold
时间:
2016-07-23 11:01
回复
15#
bmne
我说你有什么需求?
作者:
bmne
时间:
2016-07-23 11:05
回复
16#
blackold
一楼,两个源文档,全提取出来。别有遗漏
awk '/^[^\s+]+\s+[^\s+]+$/' 有问题。请给修改一下
辛苦
作者:
Herowinter
时间:
2016-07-23 11:07
回复
11#
blackold
对,是我搞错了,我自己虚拟机上awk版本低遇到过\s不支持,
想当然了,多谢黑哥指出。
作者:
Herowinter
时间:
2016-07-23 11:08
回复
17#
bmne
不知道你想干嘛,我猜的呀。
你贴一下原文件和要求的结果,要不别人不知道你要干什么。
作者:
bmne
时间:
2016-07-23 11:15
回复
19#
Herowinter
谢谢大神回复
我认为大神看一眼就明白了。所以简化了,不好意思
我的意思:把这两个代码一次性全自动运行。我用管道连了一下,不正确。再深入我就不会了
awk '/^[[:space:]]*[^[:space:]]+[[:space:]]+[^[:space:]]+$/'
awk '/^[^,]+,[^,]+$/'
你大神给的这个:awk '/^[[:space:]]*[^[:space:]]+[[:space:]]+[^[:space:]]+$/ && /^[^,]+,[^,]+$/' 我运行后,提取不出。我不知道什么原因,特来请教
作者:
blackold
时间:
2016-07-23 11:18
回复
17#
bmne
哪里有两个源文档?
如果不好用文字描述,就上源文本和你想得到的结果。
作者:
Herowinter
时间:
2016-07-23 11:19
回复
20#
bmne
你要提取出来的行是这两个条件都满足还是满足1个就行了?
作者:
bmne
时间:
2016-07-23 11:20
关于这个awk '/^[^\s+]+\s+[^\s+]+$/'有问题,如果能解决更好,我偷学知识。解决不了的话,有这个足以awk '/^[[:space:]]*[^[:space:]]+[[:space:]]+[^[:space:]]+$/'
这就是我的意思。谢谢了大神
作者:
bmne
时间:
2016-07-23 11:23
本帖最后由 bmne 于 2016-07-23 11:24 编辑
回复
22#
Herowinter
主要是想全自动一次运行,单独手动分两次运行费劲
满足一个条件即可。不好意思
(跟你偷学。奇怪,管道运行两个怎不行呢?)
作者:
Herowinter
时间:
2016-07-23 11:24
回复
24#
bmne
awk '/^[[:space:]]*[^[:space:]]+[[:space:]]+[^[:space:]]+$/ || /^[^,]+,[^,]+$/'
复制代码
作者:
bmne
时间:
2016-07-23 11:27
谢谢了。又学了一招
什么条件下,双|| ?
回复
25#
Herowinter
作者:
Herowinter
时间:
2016-07-23 11:28
回复
26#
bmne
&& 逻辑与 两个条件都要满足
|| 逻辑或 两个条件满足一个即可
作者:
bmne
时间:
2016-07-23 11:31
本帖最后由 bmne 于 2016-07-23 11:32 编辑
回复
21#
blackold
003163.om 6651
232098m 6892
42986co 43136
jgo.m 40931
90499.o gji789
678.q.o aoe12.
022149q.c 16203
1624@1m 122
i_4_u_25@.c,s05
mi_9@3.o
,saci
lo14@6.o
,.hae
ju@1.m
j4jun
ty626.om ao09
kmk_08@6.om
kik0
iag@13.m
8105
xin_ling_shi_zhe 156
christinaniuwenting 4826
wsbbh 1278
ghbfg sckw
大神,上面的我用awk '/^[^\s+]+\s+[^\s+]+$/' 提取不全面,有遗漏(可参看一楼)
请给修改下这个代码
辛苦了
作者:
bmne
时间:
2016-07-23 11:38
回复
27#
Herowinter
真热心啊大神,崇拜
偷学一招
作者:
blackold
时间:
2016-07-23 11:49
回复
28#
bmne
awk '/^[^\s+]+\s+[^\s+]+$/' urfile
复制代码
会匹配到
lo14@6.o,.hae
你确定吗?
作者:
bmne
时间:
2016-07-23 11:57
本帖最后由 bmne 于 2016-07-23 12:06 编辑
回复
30#
blackold
我假设了极端情况
实际就是一个 , 后面跟着是字符 .hae
确定的 谢谢
作者:
bmne
时间:
2016-07-23 12:03
回复
25#
Herowinter
大神,今天跟你学最后一招(学多了,怕你烦,不教了)
请问这个提取非(反向),怎么表示?
awk '/^[[:space:]]*[^[:space:]]+[[:space:]]+[^[:space:]]+$/ || /^[^,]+,[^,]+$/'
另外,3个以上管道,取非 用 ! 怎样表示?
作者:
Herowinter
时间:
2016-07-23 12:17
本帖最后由 Herowinter 于 2016-07-23 12:17 编辑
回复
32#
bmne
awk '!/^[[:space:]]*[^[:space:]]+[[:space:]]+[^[:space:]]+$/ && !/^[^,]+,[^,]+$/'
复制代码
作者:
bmne
时间:
2016-07-23 12:36
回复
33#
Herowinter
谢谢。这一招很管用
今天就麻烦你到此了
感谢感谢
作者:
blackold
时间:
2016-07-23 12:52
回复
33#
Herowinter
大部分情况下都可以用 \s 或 \S 代替。
作者:
bmne
时间:
2016-07-23 15:56
本帖最后由 bmne 于 2016-07-23 15:57 编辑
回复
33#
Herowinter
大神,我今天食言了
遇到了极端情况
一、中间及末尾两个地方有逗号
二、开头、中间、末尾三个地方有空格及中间、末尾两个地方有空格
请求帮助。给出两个代码,分别提取
......k1@1.m
,llol,
121@12.m
,123,
1256@6.cm
,16,
53@1.m
,mel,
82@6.m
,uña,
90esr@6.om
,92ter,
a-l-n-p@1.o
,llmc,
a.a.0@1.om
,Nan02,
a.bos2@6.m
,Dps93,
a.c_uin@1.cm
,fe47,
a.gl_776.m,rn,
a.mclch@16.cm
,sper,
a.mhe@2.m
,an02,
a.mowa@2.cm
,sveh8,
a.mtou6.cm,199,
a.pe4@6.o
,joie,
a.r.guy@m,msy,
a.r.mn@6.c
,sn61,
a.sala@1.m
,sn7,
VAAULm SCE
clo1@3.c
EE1
es10@6.cm
soth
vt6@6.c
1ead
wig@1m ken
crg1@3.m
Cv94
na0@6.c
890
onn@m ynn
nan_20@1.o
39
nan7@26.m
962
onan2om 121
ngnn@1m d12
ngnm 111
ngmg3@om 93
ono@1. 171
g1@2.c
383
dr_an@.m ara67
r120@6.o
129
1815@cm 758
r93@16.m
a560
D0@1om 191
dr36. 324
dr.c 921
dr92om 89
drm s346
作者:
Herowinter
时间:
2016-07-23 17:01
回复
36#
bmne
sed -nr '/^([^,]+,){2}$||^\s*(\S+\s+){2}$/p'
复制代码
作者:
bmne
时间:
2016-07-23 17:12
回复
37#
Herowinter
谢大神
马上试试去。添麻烦了
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2