Chinaunix

标题: [ 请教 ] 怎样来描述一行中用空格分隔的特定长度的字段? [打印本页]

作者: smileinwind    时间: 2003-07-18 13:53
标题: [ 请教 ] 怎样来描述一行中用空格分隔的特定长度的字段?
例如:
0100 214444535464565 888888
0200000  2131uuuuusdjjks 8888888
123232343 888888 21312asdfretywe

每一行中都有固定长度为15的列,怎么来描述能正确的匹配它们呢?
作者: hwhcom    时间: 2003-07-18 14:05
标题: [ 请教 ] 怎样来描述一行中用空格分隔的特定长度的字段?
awk 'BEGIN{i=0;}
{
for(i=0;i<=NF;i++)
     if(length($i)==15) print $i
}' filename
作者: smileinwind    时间: 2003-07-18 14:52
标题: [ 请教 ] 怎样来描述一行中用空格分隔的特定长度的字段?
厉害,非常感谢!!
作者: admirer    时间: 2003-07-18 14:57
标题: [ 请教 ] 怎样来描述一行中用空格分隔的特定长度的字段?
  1. sed 's/.* \(.\{15\}\) .*/\1/' file
  2. 214444535464565
  3. 2131uuuuusdjjks
  4. 21312asdfretywe
复制代码

作者: smileinwind    时间: 2003-07-18 15:36
标题: [ 请教 ] 怎样来描述一行中用空格分隔的特定长度的字段?
[quote]原帖由 "admirer"][/quote 发表:
     

# cat test
jdkfjkdjsakfjkdjfksdjfdjfk
aaa
0100 214444535464565 888888
0200000 2131uuuuusdjjks 8888888
123232343 888888 21312asdfretywe

# sed 's/.* \(.\{15\}\) .*/\1/' test
jdkfjkdjsakfjkdjfksdjfdjfk
aaa
214444535464565
214444535464565
2131uuuuusdjjks

# sed -ne 's/.* \(.\{15\}\) .*/\1/p' test
214444535464565
2131uuuuusdjjks
21312asdfretywe

这是测试的结果。看来一些细节还得留意。

请教admirer,\(.\{15\}\) 不是表示15个除了换行符以外的任意字符吗?为何能确定是15个非空格字符?
作者: anonimousboy    时间: 2003-07-18 16:46
标题: [ 请教 ] 怎样来描述一行中用空格分隔的特定长度的字段?
原帖由 "hwhcom" 发表:
awk 'BEGIN{i=0;}
{
for(i=0;i<=NF;i++)
     if(length($i)==15) print $i
}' filename
   

SPSP~~
作者: admirer    时间: 2003-07-18 18:52
标题: [ 请教 ] 怎样来描述一行中用空格分隔的特定长度的字段?
原帖由 "smileinwind" 发表:
   

请教admirer,\(.\{15\}\) 不是表示15个除了换行符以外的任意字符吗?为何能确定是15个非空格字符?

谢谢你的测试!
\(.\{15\}\)表示的是“.”即任意字符的15个组合




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2