Chinaunix

标题: 问一个awk打印的问题 [打印本页]

作者: spongeliu    时间: 2011-12-04 19:06
标题: 问一个awk打印的问题
每一行里有100列,现在我想打印第10-第50列,不用循环,不全写出来的话 还有别的方法么?
作者: cjaizss    时间: 2011-12-04 19:12
可能那堆shell里用的工具可以满足你的要求,但为什么不要循环呢?
作者: cjaizss    时间: 2011-12-04 19:14
cut -f10-50
作者: jason680    时间: 2011-12-04 19:14
回复 1# spongeliu

>>不用循环,不全写出来的话...

这是考验吗!!??
作者: ziyunfei    时间: 2011-12-04 19:20
  1. echo {1..100} | awk "{print $(echo \${10..50}FS)}"
复制代码

作者: cjaizss    时间: 2011-12-04 19:28
哦,awk
那个cut居然在我的系统上面得不到我想要的答案,真奇怪,好象也没写错啊。
awk好象办不到,本来我想用gsub,可是它没有像sed的s命令那么强
作者: ziyunfei    时间: 2011-12-04 19:45
  1. echo {1..100} | awk 'gsub(/^(\w*\s){10}|(\w*\s?){50}$/,"")'
复制代码
  1. echo {1..100} | awk '{print gensub(/(\w*\s){10}((\w*\s){40}).*/,"\\2","g")}'
复制代码
awk4以下的版本得把\s改了
作者: cjaizss    时间: 2011-12-04 20:23
awk4以下的版本得把\s改了
ziyunfei 发表于 2011-12-04 19:45



    对,\\2,呵呵……
作者: yinyuemi    时间: 2011-12-05 08:58
哦,awk
那个cut居然在我的系统上面得不到我想要的答案,真奇怪,好象也没写错啊。
awk好象办不到,本来我 ...
cjaizss 发表于 2011-12-04 19:28



    老大,是不是这样的:
echo {1..100} |cut -d' ' -f10-50
作者: cjaizss    时间: 2011-12-05 09:18
老大,是不是这样的:
echo {1..100} |cut -d' ' -f10-50
yinyuemi 发表于 2011-12-05 08:58



    按理不加-d应该也可以的吧,有了awk/sed,特别是玩linux之后,gnu的awk/sed用起来这么爽,偶基本不用这些工具了,哈哈
作者: yinyuemi    时间: 2011-12-05 09:47
回复 10# cjaizss


  
-d, --delimiter=DELIM   use DELIM instead of TAB for field delimiter

是的,实际工作中还是awk和sed更给力
作者: cjaizss    时间: 2011-12-05 10:11
回复  cjaizss


   
是的,实际工作中还是awk和sed更给力
yinyuemi 发表于 2011-12-05 09:47



    看来可能是版本的差异,linux下必须要指定-d
   但echo ' 1 2 3 4'|cut -d' ' -f2-4
   .....
作者: mpstat    时间: 2011-12-05 20:02
看来可能是版本的差异,linux下必须要指定-d
   但echo ' 1 2 3 4'|cut -d' ' -f2-4
   .....
cjaizss 发表于 2011-12-05 10:11



    cut不好用,如果哪一段是两个空格分的就傻了...




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