+ -
当前位置:首页 → 问答吧 → awk:同时处理多个文件,每一个文件用自己单独的分割符,咋写?

awk:同时处理多个文件,每一个文件用自己单独的分割符,咋写?

时间:2011-02-14

来源:互联网

本帖最后由 jils2013 于 2011-02-14 15:41 编辑

awk 处理多个文件,a文件用:作分割符;b文件用空格作分割符号;c文件用/作分割符号....怎么写?

要写在一起的那种;之前的分开处理 通过一个变量传的时候,报了一个:

0602-508 The string or regular expression beginning with
        the characters "XXXX_" cannot contain more than 399 bytes.
......

作者: jils2013   发布时间: 2011-02-14

awk 'FILENAME="a"{FS=":"}FILENAME="b"{FS=" "}FILENAME="c"{FS="/"}..." a b c

作者: cjaizss   发布时间: 2011-02-14

回复 jils2013
  1. cat 1
  2. a:b:c:d
  3. cat 2
  4. a|b|c|d
  5. cat 3
  6. a/b/c/d
  7. awk ' {print $1}' FS=":" 1 FS="|" 2  FS="/" 3
  8. a
  9. a
  10. a
复制代码

作者: yinyuemi   发布时间: 2011-02-14

回复 cjaizss

这个句子,需要写道BEGIN里面吗?

作者: jils2013   发布时间: 2011-02-14



QUOTE:
回复  cjaizss

这个句子,需要写道BEGIN里面吗?
jils2013 发表于 2011-02-14 15:42




    这不是BEGIN段的

作者: cjaizss   发布时间: 2011-02-14



QUOTE:
这不是BEGIN段的
cjaizss 发表于 2011-02-14 15:43




    BEGIN段是awk程序在刚开始进去的时候就执行的.而切换FS是应该在之后啊

作者: cjaizss   发布时间: 2011-02-14



QUOTE:
这不是BEGIN段的
cjaizss 发表于 2011-02-14 15:43




    看到很多指定fs和rs的句子都是写在begin段中的,为什么这个不写进去那。
    关于啥写begin段里,我也是比较混乱。

作者: jils2013   发布时间: 2011-02-14



QUOTE:
这不是BEGIN段的
cjaizss 发表于 2011-02-14 15:43




    好像有点意思了,感激不尽啊,:wink:

作者: jils2013   发布时间: 2011-02-14



QUOTE:
回复  jils2013
yinyuemi 发表于 2011-02-14 15:40




    这样写,是不是和分开处理差不多啊.比如第一个文件处理的结果可以传给第二个文件吗?最好不是通过变量什么的,要不又报
0602-508 The string or regular expression beginning with
        the characters "XXXX_" cannot contain more than 399 bytes.
.........................

作者: jils2013   发布时间: 2011-02-14

回复 jils2013


    可以啊,还是那个例子,比如把文件1中第一列的a和文件2的第一列的a打印出来:
  1. awk ' ARGIND==2{x=$1}ARGIND==4{print x" "$1}' FS=":" 1 FS="|" 2  FS="/" 3
  2. a a
复制代码

作者: yinyuemi   发布时间: 2011-02-14

回复 cjaizss


    cjaizss 兄我试了你办法为啥不行啊,指点下吧
文件1 2 3 是我给的那个例子
  1. awk ' FILENAME=="1"{FS=":"}{print $1}'  1  2  3
  2. a:b:c:d
  3. a|b|c|d
  4. a/b/c/d
复制代码

作者: yinyuemi   发布时间: 2011-02-14



QUOTE:
回复  jils2013


    可以啊,还是那个例子,比如把文件1中第一列的a和文件2的第一列的a打印出来:
yinyuemi 发表于 2011-02-14 15:53




    FS="x" 文件名字?这样子吗?这个是在处理语句外面写的吗?

作者: jils2013   发布时间: 2011-02-14

回复 jils2013


    文件名是 1 2 3
FS="X" X是分隔符
ARGIND 是命令行中当前文件的位置

作者: yinyuemi   发布时间: 2011-02-14



QUOTE:
回复  cjaizss


    cjaizss 兄我试了你办法为啥不行啊,指点下吧
文件1 2 3 是我给的那个例子
yinyuemi 发表于 2011-02-14 15:57




    在设FS之后再加一句{$0=$0}

作者: cjaizss   发布时间: 2011-02-14

回复 cjaizss


    get it!!原来如此,多谢老兄!:mrgreen:

作者: yinyuemi   发布时间: 2011-02-14

热门下载

更多