什么Linux命令可以解析每行有两个分隔符的文件?

时间:2011-12-06 11:19:08

标签: linux awk nested

我有一个包含两个分隔符的文件(“”和“”),我基本上想要一个类似嵌套/递归的AWK命令让我迭代我想要的值:

Value-1.1:Value-1.2:Value-1.3:Value-1.A,Value-1.B,Value-1.C
Value-2.1:Value-2.2:Value-2.3:Value-2.A,Value-2.B

对于每个Value-1。{A | B | C}我想用Value-1.2做一些事情,然后继续前进到下一行,每个Value-2都在这里。{A | B},我想要使用Value-2.2做一些事情,依此类推。

这是我可以在单个AWK脚本中执行的操作,还是我需要使用管道进行创作?

感谢。

3 个答案:

答案 0 :(得分:2)

Awk使用正则表达式来指示字段分隔符。如,

awk -F ':|,' '{ print NF }' 

将显示

6
5
输入行

答案 1 :(得分:0)

perl的一个例子:

#!/usr/bin/perl

while (my $line = <STDIN>) {
  my @vals = split(/,|:/, $line);
  for (my $value) (@vals) {
    print $value, "\n";
  }
}

答案 2 :(得分:0)

您可以通过替换字段分隔符并分配到$0

来使用awk获得创意
 v11 = $1;
 v12 = $2;
 FS = ",";
 $0 = $3;
 print v11 " " v12 " " $1;