Печатать наборы строк из нескольких папок в виде строк, а не столбцов? - PullRequest
0 голосов
/ 04 марта 2019

У меня есть файлы .out в нескольких папках.

Допустим, я нахожусь в каталоге, содержащем папки A, B, C, D. Я использую приведенную ниже команду для печати определенного значения из 8-го столбца строк, содержащих ключевое слово VALUE во всех файлах .out в папках.A, B, C, D

awk '/VALUE/{print $8}' ./*/.out

Мой результат будет выглядеть следующим образом:

output1_A
output2_A
output3_A

output1_B
output2_B
output3_B

output1_C
output2_C
output3_C 

Есть ли способ, которым мой вывод мог бы выглядеть так, как показано ниже?

output1_A output2_A output3_A 
output1_B output2_B output3_B 
output1_C output2_C output3_C 

Другими словами, пробел отделяет выходные данные из одной и той же папки, а не перевод строки?

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Другое:

$ awk '/VALUE/{b=b (FNR==(NR>FNR)?ORS:ofs) $8;ofs=OFS}END{print b}' dir?/file1
output1_A output2_A output3_A
output1_B output2_B output3_B
output1_C output2_C output3_C

Объяснено:

$ awk '
/VALUE/ {                                # magic keyword
    b=b (FNR==(NR>FNR)?ORS:ofs) $8       # gathering a buffer set ORS or OFS appropriately
    ofs=OFS                              # ... but @NR==1 we want ""
}
END {
    print b                              # output buffer
}' dir?/file1

Необъяснимые две пустые записи в вашем образце не рассматриваются, но, вероятно, вызовут дополнительные OFS es на концахвыходные записи.

0 голосов
/ 04 марта 2019

Не могли бы вы попробовать следующее (поскольку у меня нет структуры каталогов, поэтому я не смог проверить ее, или если OP мог бы публиковать содержимое файла внутри каталога, возможно, мы могли бы сделать это и в одном awk) *

awk '/VALUE/{print $8}' ./*/.out | xargs -n 3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...