我有一个包含两个分隔符的文件(“:”和“,”),我基本上想要一个类似嵌套/递归的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脚本中执行的操作,还是我需要使用管道进行创作?
感谢。
答案 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
:
v11 = $1;
v12 = $2;
FS = ",";
$0 = $3;
print v11 " " v12 " " $1;