Какие команды Linux могут анализировать файл с двумя разделителями в строке? - PullRequest
0 голосов
/ 06 декабря 2011

У меня есть файл, который содержит два разделителя (": " и ", "), и я в основном хочу что-то вроде вложенной / рекурсивной команды 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

Для каждого значения-1. {A | B | C} я хочу сделать что-то со значением-1.2, а затем перейти к следующей строке, где для каждого значения-2. {A | B}, я хочу что-то делать с Value-2.2 и т. д.

Это то, что я могу сделать в одном скрипте AWK, или мне нужно быть креативным с трубами?

Спасибо.

Ответы [ 3 ]

2 голосов
/ 06 декабря 2011

Awk использует регулярное выражение для обозначения разделителя полей.Например,

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

покажет

6
5

для ваших строк ввода.

0 голосов
/ 06 декабря 2011

Вы можете проявить творческий подход с помощью awk, заменив разделитель полей и назначив $0:

 v11 = $1;
 v12 = $2;
 FS = ",";
 $0 = $3;
 print v11 " " v12 " " $1;
0 голосов
/ 06 декабря 2011

пример с perl:

#!/usr/bin/perl

while (my $line = <STDIN>) {
  my @vals = split(/,|:/, $line);
  for (my $value) (@vals) {
    print $value, "\n";
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...