找个shell高手帮忙把一条命令写进awk里面。

想把sed 's/\+\+\+ \/tmp\/.*\.tmp/\.$3/g'移到awk里面使用,这个$3是awk里的变量。awk的坑,我踩了。

awk '{cmd="sed ' " ' " 's/\+\+\+ \/tmp\/.*\.tmp/\.$3/g' " ' " ' "; system(cmd)}' 失败

awk

===========
awk  一个优良的文本处理工具,Linux及Unix环境中现有的功能最强大的数据处理引擎之一。


处理流程:(以行为处理单位)

    通常,awk是以文件的一行为处理单位的。awk每接收文件的一行,然后执行相应的命令,来处理文本


语法格式:

    1\\ awk [options] 'script' var=value file(s)  
    2\\ awk [options] -f scriptfile var=value file(s)
    # 注意:
        以单引号来界定script, 因此内部最好用双引号
        'script',即两部分组成:'{pattern + action}'。pattern-模式:表示 awk 在数据中查找的内容,action-操作:是在找到匹配内容时所执行的一系列命令。


调用方式:

    (1) awk 命令行
    用于解决简单的问题。当然,你也可以在shell script 程序中引用awk 命令行甚至awk 程序脚本。

    (2) 使用-f 选项调用awk 程序
    awk 允许将一段awk 程序写入一个文本文件,然后在awk 命令行中用-f 选项调用并执行这段程序。

    (3) 利用命令解释器调用awk 程序
    利用UNIX 支持的命令解释器功能,我们可以将一段awk 程序写入文本文件,然后在它的第一行加上#!/bin/awk –f.

    
关于'BEGIN{} //{command1; command2} END{}':

    awk [-F|-f|-v] 'BEGIN{} //{command1; command2} END{}' file
     [-F|-f|-v]   大参数,-F指定分隔符,-f调用脚本,-v定义变量 var=value
    '  '          引用代码块
    BEGIN   初始化代码块,在对每一行进行处理之前,初始化代码,主要是引用全局变量,设置FS分隔符
    //           匹配代码块,可以是字符串或正则表达式
    {}           命令代码块,包含一条或多条命令
    ;          多条命令使用分号分隔
    END      结尾代码块,在对每一行进行处理之后再执行的代码块,主要是进行最终计算或输出结尾摘要信息
 

常用命令选项:

    -F fs fs 指定输入分隔符,fs可以时字符串或正则表达式
    -v var=value 赋值一个用户定义变量,将外部变量传递给awk
    -f scriptfile 从脚本文件中读取awk命令
    

常见变量:

    $n    当前记录的第n个字段,字段间由FS分隔
    $0  完整的输入记录        # {print} 与 {print $0}都是打印当前行的全部内容
    FS     字段分隔符(默认是任何空格)
    NF     一条记录的字段的数目
    NR     已经读出的记录数,就是行号,从1开始
    FNR    各文件分别计数的行号
    OFS    输出记录分隔符(输出换行符),输出时用指定的符号代替换行符


awk的 I/O指令:print, printf( ), getline, ...
awk的 流程控制指令:if(...){..} else{..}, while(...){...}, ...

这个我知道啊,问题是写进去这个命令不知道怎么搞,各种转义问题