免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4645 | 回复: 14
打印 上一主题 下一主题

请问如何对多个文件执行相同的命令 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-07-06 14:36 |只看该作者 |倒序浏览
我对文件的处理命令行是这样的:
cat 11.out|grep "^gi">11_oute-5
cat 11_oute-5|cut -f1>11_f1
cat 11_oute-5|cut -f2>11_f2
perl ../x4.pl 11_f1 ../inverginame

我现在有几十个文件,分别叫11,12,13.。。。。。请问如何用bash命令实现对每个文件执行上面的命令行。我不知道$怎么用?谢谢大家!

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
2 [报告]
发表于 2011-07-06 15:03 |只看该作者
回复 1# chenjiali1


    这个?
  1. for filename in `ls *.out`
  2. do
  3. cat $filename|grep "^gi">$filenamee-5
  4. cat $filenamee-5|cut -f1>$filename_f1
  5. cat $filenamee-5|cut -f2>$filename_f2
  6. perl ../x4.pl $filename_f1 ../inverginame
  7. done
复制代码

论坛徽章:
0
3 [报告]
发表于 2011-07-06 15:12 |只看该作者
回复 2# yinyuemi


    我试了一下,好像不行哦。
提示是这样的。
11.sh: 6: cannot create : Directory nonexistent
cat:无效选项 -- 5
请尝试执行“cat --help”来获取更多信息。
11.sh: 6: cannot create : Directory nonexistent
cat:无效选项 -- 5
请尝试执行“cat --help”来获取更多信息。
11.sh: 6: cannot create : Directory nonexistent
cat:无效选项 -- 5
请尝试执行“cat --help”来获取更多信息。
11.sh: 6: cannot create : Directory nonexistent
cat:无效选项 -- 5
请尝试执行“cat --help”来获取更多信息。

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
4 [报告]
发表于 2011-07-06 15:18 |只看该作者
回复  yinyuemi


    我试了一下,好像不行哦。
提示是这样的。
11.sh: 6: cannot create : Directo ...
chenjiali1 发表于 2011-07-06 15:12


这样呢?
        for filename in `ls *.out`
    do
    grep "^gi" $filename >$filename_gi
    cut -f1 < $filename_gi>$filename_f1
    cut -f2 < $filename_gi>$filename_f2
    perl ../x4.pl $filename_f1 ../inverginame
    done

论坛徽章:
0
5 [报告]
发表于 2011-07-06 15:26 |只看该作者
11.sh: 7: cannot create : Directory nonexistent
11.sh: 7: cannot open : No such file
11.sh: 7: cannot open : No such file
这次提示是这样的,是不是我有什么环境变量没定义好啊,我看我同学的程序写的和这个差不多,可以跑,我的怎么就不行呢?
他有个sh是这样的
for a in 'cat name';
do cd $a;
perl x4.pl;
cd ../;
done;

论坛徽章:
23
15-16赛季CBA联赛之吉林
日期:2017-12-21 16:39:27白羊座
日期:2014-10-27 11:14:37申猴
日期:2014-10-23 08:36:23金牛座
日期:2014-09-30 08:26:49午马
日期:2014-09-29 09:40:16射手座
日期:2014-11-25 08:56:112015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:0315-16赛季CBA联赛之山东
日期:2017-12-21 16:39:1915-16赛季CBA联赛之广东
日期:2016-01-19 13:33:372015亚冠之山东鲁能
日期:2015-10-13 09:39:062015亚冠之西悉尼流浪者
日期:2015-09-21 08:27:57
6 [报告]
发表于 2011-07-06 15:28 |只看该作者
cat 11.out|grep "^gi">11_oute-5
cat 11_oute-5|cut -f1>11_f1
cat 11_oute-5|cut -f2>11_f2
这3句用1句 awk 就可以完成:
awk '/^gi/{print $1>"11_f1";print $2>"11_f2"}' 11.out

x4.pl 不知道是什么内容,应该都可以合到 awk 一起做掉

论坛徽章:
0
7 [报告]
发表于 2011-07-06 15:32 |只看该作者
回复 6# ly5066113


    谢谢,这些命令倒是无所谓的,因为生成的每个文件我后面都用的到,所以我这样写的,f1,f2后面还都用的着的。我主要是想知道怎么对多个文件执行相同的操作。望指教!

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
8 [报告]
发表于 2011-07-06 15:34 |只看该作者
回复 5# chenjiali1


    你的sh脚本第7行是那句代码?
   感觉是perl脚本读取文件出错了

论坛徽章:
0
9 [报告]
发表于 2011-07-06 15:41 |只看该作者
回复 8# yinyuemi


    第7行是done,我把前面的行去掉的话,每次出问题都是提示在done哪一行,咋回事呢?
这样输的话
for filename in `ls *.out`
    do
    grep "^gi" $filename >$filename_gi
    done
提示就是这样的
11.sh: 4: cannot create : Directory nonexistent
11.sh: 4: cannot create : Directory nonexistent

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
10 [报告]
发表于 2011-07-06 15:48 |只看该作者
回复 9# chenjiali1


    你的文件名中包含'/'么?
   贴一下ls *.out 看下
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP