a.txt 参数太复杂有点儿晕菜了" />
红联Linux门户
Linux帮助

请大牛们帮忙解释一下这句AWK

发布时间:2011-10-09 10:30:59来源:红联作者:gwssgc
awk 'BEGIN{}{if(NR==FNR){ts[i]=$0;i=i+1;} if(NR>FNR) { print ts[t] " " $0; t=t+1; }}END{}' 1.txt pid1.txt >a.txt
参数太复杂有点儿晕菜了
文章评论

共有 9 条评论

  1. ai0909 于 2011-10-20 10:34:41发表:

    {:2_95:}

  2. hsl727261250 于 2011-10-19 22:08:32发表:

    仰视楼上高手表示致敬,低头审视自己继续学习。

  3. hsl727261250 于 2011-10-19 22:02:41发表:

    仰视楼上高手表示致敬,低头审视自己继续学习。

  4. allan5220 于 2011-10-18 14:02:52发表:

    完全不明,向高手致敬!

  5. accpfirewindboy 于 2011-10-18 10:07:04发表:

    高手啊:0w5ty(1

  6. yanyongkg 于 2011-10-17 23:41:47发表:

    找到有个纵向合并文件的命令paste
    用法:paste file1 file2

  7. yanyongkg 于 2011-10-16 23:16:28发表:

    [i=s] 本帖最后由 yanyongkg 于 2011-10-16 23:21 编辑 [/i]

    awk在处理两个文件时,当读到第二个新文件时FNR都重新从1开始记数,而NR就一直自增下去
    NR==FNR可以判断出awk此时是在处理第一个文件
    NR>FNR可以判断出awk此时在处理第二个文件

    BEGIN{}
    END{}
    这两个是脱裤子放P,既然action部分什么也不做,干嘛还要加它![code]{ts[i]=$0;i=i+1;}[/code]把第一个文件1.txt的每一行依次存在数组ts 以i为数组下标,并做自加i++
    也就是第一行存到ts[""] 不是ts[0]哦,i被初始为空值哦,刚开始我也以为是ts[0]
    第二行存到ts[1]
    第三行存到ts[2]


    。[code]{ print ts[t] " " $0; t=t+1; }[/code]当读到第二个文件pid1.txt时,取出数组ts中保存的第一个文件的每一行,并插入到第二个文件每一行前并加一个空格
    取出数组中保存的数据道理同前保存数据时

    最后输出定向到a.txt

  8. gwssgc 于 2011-10-09 15:27:39发表:

    顶起,请awk大牛指教!

  9. 相思爱文 于 2011-10-09 13:02:25发表:

    我也晕,下面单独每一行都是什么意思啊

    awk
    '
    BEGIN{}
    {
    if(NR==FNR)
    {ts[i]=$0;i=i+1;}
    if(NR>FNR)
    { print ts[t] " " $0; t=t+1; }
    }
    END{}
    '
    1.txt pid1.txt
    >a.txt