У меня есть файл, который выглядит так:
1 543423 34354
2 5654656 3423 xyz_1378,xyz_1379
3 4645656 34234354 xyz_1384,xyz_1385
4 5654 78678 xyz_1390,xyz_1391,xyz_1392
5 54654 76867 xyz_1411,xyz_1412,xyz_1413
6 54654 8678
7 56546 67867 xyz_1711
8 678 7867
9 76867 7876 xyz_2940
10 6786 678678 xyz_3101,xyz_3102,xyz_3103,xyz_3104,xyz_3105,xyz_3106,xyz_3107
11 67867 78678
Обратите внимание, что он содержит 4 поля, разделенных пробелом. последнее (четвертое) поле может быть пустым и содержать несколько значений, разделенных запятыми.
Я хотел бы напечатать все значения из последней строки, по одному в строке. как я могу это сделать (желательно с помощью awk)?
ОБНОВЛЕНИЕ: мне нужно сделать это в пакетном режиме для многих файлов (получает объединенный вывод всех файлов вместе).
Это работает:
for x in *; do awk '{print $4}' $x/filename | awk --field-separator="," '{if ($0 != "") {for (i=1; i<NF+1; i++) print $i}}'; done;
и возвращает что-то вроде
xyz_1378
xyz_1221
xyz_97
xyz_132523
xyz_242
Единственное, чего мне сейчас не хватает, так это того, что я хочу, чтобы каждая из приведенных выше строк начиналась с дополнительного поля — $x (тот, что из цикла for
).
Я попытался изменить print $i
на print $x,$i" but
x`, похоже, он не распознается правильно в этой области. Любые идеи?
Спасибо!