shell问题,awk

fonganzen 2009-09-22 09:27:12
在写脚本时发现一个问题,以下面的语句为例:
cat 1.txt|awk '{print $1}'
cat 1.txt|awk '{print $2}'
cat 1.txt|awk '{print $3}'
如果我想实现一下功能:$后面的1、2、3用参数代替, 如:cat 1.txt|awk '{print $“我想自己添加的变量”}'
一下两种方法我都试过不行,请问该怎么实现
方法1
a=i
for ((i=0;i<3;I++)
do
cat 1.txt|awk '{print $$a}'
done

方法2

a='$'$i
for ((i=0;i<3;I++)
do
cat 1.txt|awk '{print $a}'
done
...全文
65 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
louie19830916 2009-09-24
  • 打赏
  • 举报
回复
把for放awk里。。。
awk '{for (i=1;i<NF;i++){ print i; print $i}}' urfile
ps:你的方法 首先浪费了cat操作; 其次多用了n次awk
每次awk都会扫描一遍一个文件 所以效率很一般阿
沐星晨 2009-09-23
  • 打赏
  • 举报
回复

for i in 1 2 3
do
# cat 1.txt|awk '{print $"'$i'"}'
cat 1.txt|eval awk \'{print \$$i}\'
done


(或用注释掉的那句也行)
feillex 2009-09-22
  • 打赏
  • 举报
回复

cat 1.txt|awk -v a=2 '{print $a}'

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧