IT技术博客大学习 共学习 共进步

从shell中向awk传递变量实例

懒人运维 2010-03-21 22:52:04 浏览 4,482 次

次实例参数传递方法:’”$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命令行里的“瑞士军刀” (阅读 11,443)
  2. AWK 简明教程 (阅读 9,143)
  3. awk命令,实现文件的合并与拆分 (阅读 6,962)
  4. AWK介绍 (阅读 6,581)
  5. 更快的IP库查找方法以及AWK中的二分查找 (阅读 6,401)
  6. awk 实例之二维数组 (阅读 5,923)
  7. Axure之变量的使用 (阅读 5,042)
  8. 操作大文本,awk vs vim (阅读 4,962)
  9. SED命令行脚本快速参考,AWK命令行脚本快速参考,perl命令行脚本快速参考 (阅读 4,744)
  10. 深入PHP使用技巧之变量 (阅读 4,661)