技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> Linux --> 从shell中向awk传递变量实例

从shell中向awk传递变量实例

浏览:3598次  出处信息

次实例参数传递方法:’”$1″‘(单引号双引号变量双引号单引号)

  • 需求:
#!/bin/sh
for file_name in `ls src`
do
echo ${file_name}
awk -F ";" '{if($4 == ?????) print}' ${file_name} >> list
done;

我要检索src目录中的文件,对每一个文件进行分析,如果文件的第4个字段符合一定条件,比如说,第4个字段是”a123″,则将这些符合条件的记录保存 成另外一个文件;该条件,我想在整个shell脚本的$1参数地方体现。

如上脚本,我现在想在?????处引用该shell脚本的第一个 参数$1,请问,?????该怎么写?

  • 解决办法1:调用’”${1}”‘参数
[root@manifold ~]# ls
anaconda-ks.cfg Desktop install.log install.log.syslog test2.sh test.sh
[root@manifold ~]# cat test.sh
#!/bin/sh
 
for file_name in `ls /root`
do
echo ${file_name}
awk -F ";" '{if($4 == '"${1}"') print}' ${file_name} >> list
done;
 
[root@manifold ~]# cat test2.sh
manifold;manifold2;manifold3;1234;end
[root@manifold ~]# ls
anaconda-ks.cfg Desktop install.log install.log.syslog test2.sh test.sh
[root@manifold ~]# sh test.sh 1234
anaconda-ks.cfg
Desktop
awk: cmd. line:1: fatal: file `Desktop' is a directory
install.log
install.log.syslog
test2.sh
test.sh
[root@manifold ~]# ls
anaconda-ks.cfg Desktop install.log install.log.syslog list test2.sh test.sh
[root@manifold ~]# cat list
manifold;manifold2;manifold3;1234;end
  • 解决办法2:使用Awk -v 参数
$ lf
awkvar* src/
$ cat awkvar
#! /bin/sh
 
files=`ls src/*`
for file_name in ${files}
do
        awk -F ":" -v country=China '{ if($4 == country) print }' ${file_name}
done
 
$ ls src
software.txt    whoiswho.txt
$ cat src/*
Microsoft:Windows:XP:USA
SCO:SCO Open Server:5.0.5:USA
Kingsoft:Power Dict:2006:China
Tongtech:TongLINK/Q:6.3:China
Bill Gates:Micosft:CEO:USA
Liu Chuanzhi:Lenovo:CEO:China
$ ./awkvar
Kingsoft:Power Dict:2006:China
Tongtech:TongLINK/Q:6.3:China
Liu Chuanzhi:Lenovo:CEO:China
  • 实例扩展
#! /bin/sh
 
for f in "`ls src/*`"
do
        awk -F ":" '$4 == "'"$1"'" || $2 == "'"$2"'" { print }' ${f}
 

建议继续学习:

  1. Linux命令行里的“瑞士军刀”    (阅读:10145)
  2. AWK 简明教程    (阅读:8133)
  3. awk命令,实现文件的合并与拆分    (阅读:6582)
  4. AWK介绍    (阅读:5457)
  5. 更快的IP库查找方法以及AWK中的二分查找    (阅读:5240)
  6. awk 实例之二维数组    (阅读:4982)
  7. Axure之变量的使用    (阅读:4186)
  8. 操作大文本,awk vs vim    (阅读:3756)
  9. SED命令行脚本快速参考,AWK命令行脚本快速参考,perl命令行脚本快速参考    (阅读:3768)
  10. 深入PHP使用技巧之变量    (阅读:3568)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1