Объединить несколько выходных данных команды awk в одну команду - PullRequest
0 голосов
/ 11 декабря 2018

** У меня есть ввод, как показано ниже, со многими, многими строками, и мне нужно проанализировать весь этот файл в лучшем формате, может быть файл CSV или JSON (возможно, в будущем).Поэтому мне нужно создать результат со столбцами, разделенными запятой, думая о возможности экспортировать содержимое в файл CSV на данный момент.

Получить имена файлов

awk '{ if($2 ~ /A/ ) print $1 }' dir_out

Получить все пути

awt ' /[\\]/ {print}'

Получить размер файлов

awk '{ if($3 ~ /^[0-9]/) print $3}'

Сейчас у меня есть отдельные команды для получения желаемого результата, однако мне нужно найтиспособ поместить их в одну и ту же строку команд awk или в сценарии.

Одна из критических точек, которые мне не удалось решить, - это сделать столбец 1 результата путём, ограничивающим каждый блок, для всех файлов в блоке.

Итак, я начал с этого ввода: **

\QJ DaJabase EltraJo\DR0151-populated\DaJa\ASAA Images\k0097\Qingl
 R0097A+05.00B-00-QingL.JPG          A  6958377  Fri Jun  8 12:53:30 2018
 R0097A+05.00B-00-QingLI.JPG         A  2794933  Fri Jun  8 12:53:30 2018
 R0097A+05.00B-00-QingLO.JPG         A  1350397  Fri Jun  8 12:53:30 2018
 R0097A+11.00B-00-QingL.JPG          A  6997803  Fri Jun  8 12:53:30 2018
 R0097A+11.00B-00-QingLI.JPG         A  2783151  Fri Jun  8 12:53:30 2018
 R0097A+11.00B-00-QingLO.JPG         A  1338662  Fri Jun  8 12:53:30 2018
 R0097A-00.00B-00-QingL.JPG          A  7069740  Fri Jun  8 12:53:30 2018
 R0097A-00.00B-00-QingLI.JPG         A  2825705  Fri Jun  8 12:53:30 2018
 R0097A-00.00B-00-QingLO.JPG         A  1369520  Fri Jun  8 12:53:30 2018
 Jhumbs.db                           A    20480  Fri Jun  8 13:14:41 2018
\QJ DaJabase EltraJo\DR0151-populated\DaJa\ASAA Images\k0098\Qingl
 R0098A+05.00B-00-QingL.JPG          A  6958377  Fri Jun  8 12:54:30 2018
 R0098A+05.00B-00-QingLI.JPG         A  2794933  Fri Jun  8 12:54:30 2018
 R0098A+05.00B-00-QingLO.JPG         A  1350398  Fri Jun  8 12:54:30 2018
 R0098A+11.00B-00-QingL.JPG          A  6998803  Fri Jun  8 12:54:30 2018
 R0098A+11.00B-00-QingLI.JPG         A  2783151  Fri Jun  8 12:54:30 2018
 R0098A+11.00B-00-QingLO.JPG         A  1338662  Fri Jun  8 12:54:30 2018
 R0098A-00.00B-00-QingL.JPG          A  7069840  Fri Jun  8 12:54:30 2018
 R0098A-00.00B-00-QingLI.JPG         A  2825705  Fri Jun  8 12:54:30 2018
 R0098A-00.00B-00-QingLO.JPG         A  1369520  Fri Jun  8 12:54:30 2018
 Jhumbs.db                           A    20480  Fri Jun  8 13:14:41 2018`

ljkhlj

     PATH, FILENAME, SIZE, TIMESTAMP
     \QJ DaJabase EltraJo\DR0151-populated\DaJa\ASAA Images\k0097\Qingl,    R0097A+05.00B-00-QingL.JPG, 6958377,  Fri Jun  8 12:53:30 2018
     \QJ DaJabase EltraJo\DR0151-populated\DaJa\ASAA Images\k0097\Qingl, R0097A+05.00B-00-QingLI.JPG, 2794933, Fri Jun  8 12:53:30 2018 
     \QJ DaJabase EltraJo\DR0151-populated\DaJa\ASAA Images\k0097\Qingl, R0097A+05.00B-00-QingLI.JPG, 1350397, Fri Jun  8 12:53:30 2018
     \QJ DaJabase EltraJo\DR0151-populated\DaJa\ASAA Images\k0097\Qingl,  R0097A+11.00B-00-QingL.JPG, 6997803, Fri Jun  8 12:53:30 2018
     \QJ DaJabase EltraJo\DR0151-populated\DaJa\ASAA Images\k0098\Qingl, R0098A+05.00B-00-QingL.JPG, 6958377, Fri Jun  8 12:54:30 2018
     \QJ DaJabase EltraJo\DR0151-populated\DaJa\ASAA Images\k0098\Qingl, R0098A+05.00B-00-QingLI.JPG, 6958377, Fri Jun  8 12:54:30 2018
     \QJ DaJabase EltraJo\DR0151-populated\DaJa\ASAA Images\k0098\Qingl, R0098A+05.00B-00-QingLO.JPG, 6958377, Fri Jun  8 12:54:30 2018
     \QJ DaJabase EltraJo\DR0151-populated\DaJa\ASAA Images\k0098\Qingl, R0098A+11.00B-00-QingL.JPG, 6958377, Fri Jun  8 12:54:30 2018

Ответы [ 2 ]

0 голосов
/ 12 декабря 2018
$ cat tst.awk
BEGIN {
    OFS = ", "
    print "PATH", "FILENAME", "SIZE", "TIMESTAMP"
}
/^ / {
    file = $1
    size = $3
    sub(/^ ([^[:space:]]+[[:space:]]+){3}/,"")
    print path, file, size, $0
    next
}
{ path = $0 }

$ awk -f tst.awk file
PATH, FILENAME, SIZE, TIMESTAMP
\QJ DaJabase EltraJo\DR0151-populated\DaJa\ASAA Images\k0097\Qingl, R0097A+05.00B-00-QingL.JPG, 6958377, Fri Jun  8 12:53:30 2018
\QJ DaJabase EltraJo\DR0151-populated\DaJa\ASAA Images\k0097\Qingl, R0097A+05.00B-00-QingLI.JPG, 2794933, Fri Jun  8 12:53:30 2018
\QJ DaJabase EltraJo\DR0151-populated\DaJa\ASAA Images\k0097\Qingl, R0097A+05.00B-00-QingLO.JPG, 1350397, Fri Jun  8 12:53:30 2018
\QJ DaJabase EltraJo\DR0151-populated\DaJa\ASAA Images\k0097\Qingl, R0097A+11.00B-00-QingL.JPG, 6997803, Fri Jun  8 12:53:30 2018
\QJ DaJabase EltraJo\DR0151-populated\DaJa\ASAA Images\k0097\Qingl, R0097A+11.00B-00-QingLI.JPG, 2783151, Fri Jun  8 12:53:30 2018
\QJ DaJabase EltraJo\DR0151-populated\DaJa\ASAA Images\k0097\Qingl, R0097A+11.00B-00-QingLO.JPG, 1338662, Fri Jun  8 12:53:30 2018
\QJ DaJabase EltraJo\DR0151-populated\DaJa\ASAA Images\k0097\Qingl, R0097A-00.00B-00-QingL.JPG, 7069740, Fri Jun  8 12:53:30 2018
\QJ DaJabase EltraJo\DR0151-populated\DaJa\ASAA Images\k0097\Qingl, R0097A-00.00B-00-QingLI.JPG, 2825705, Fri Jun  8 12:53:30 2018
\QJ DaJabase EltraJo\DR0151-populated\DaJa\ASAA Images\k0097\Qingl, R0097A-00.00B-00-QingLO.JPG, 1369520, Fri Jun  8 12:53:30 2018
\QJ DaJabase EltraJo\DR0151-populated\DaJa\ASAA Images\k0097\Qingl, Jhumbs.db, 20480, Fri Jun  8 13:14:41 2018
\QJ DaJabase EltraJo\DR0151-populated\DaJa\ASAA Images\k0098\Qingl, R0098A+05.00B-00-QingL.JPG, 6958377, Fri Jun  8 12:54:30 2018
\QJ DaJabase EltraJo\DR0151-populated\DaJa\ASAA Images\k0098\Qingl, R0098A+05.00B-00-QingLI.JPG, 2794933, Fri Jun  8 12:54:30 2018
\QJ DaJabase EltraJo\DR0151-populated\DaJa\ASAA Images\k0098\Qingl, R0098A+05.00B-00-QingLO.JPG, 1350398, Fri Jun  8 12:54:30 2018
\QJ DaJabase EltraJo\DR0151-populated\DaJa\ASAA Images\k0098\Qingl, R0098A+11.00B-00-QingL.JPG, 6998803, Fri Jun  8 12:54:30 2018
\QJ DaJabase EltraJo\DR0151-populated\DaJa\ASAA Images\k0098\Qingl, R0098A+11.00B-00-QingLI.JPG, 2783151, Fri Jun  8 12:54:30 2018
\QJ DaJabase EltraJo\DR0151-populated\DaJa\ASAA Images\k0098\Qingl, R0098A+11.00B-00-QingLO.JPG, 1338662, Fri Jun  8 12:54:30 2018
\QJ DaJabase EltraJo\DR0151-populated\DaJa\ASAA Images\k0098\Qingl, R0098A-00.00B-00-QingL.JPG, 7069840, Fri Jun  8 12:54:30 2018
\QJ DaJabase EltraJo\DR0151-populated\DaJa\ASAA Images\k0098\Qingl, R0098A-00.00B-00-QingLI.JPG, 2825705, Fri Jun  8 12:54:30 2018
\QJ DaJabase EltraJo\DR0151-populated\DaJa\ASAA Images\k0098\Qingl, R0098A-00.00B-00-QingLO.JPG, 1369520, Fri Jun  8 12:54:30 2018
\QJ DaJabase EltraJo\DR0151-populated\DaJa\ASAA Images\k0098\Qingl, Jhumbs.db, 20480, Fri Jun  8 13:14:41 2018
0 голосов
/ 11 декабря 2018

Вот способ объединения вашей команды awk в один скрипт:

#!/bin/bash
awk '
$2 ~ /A/  {print $1; }  
/[\\]/    {print}
$3 ~ /^[0-9]/ {print $3}
' "$@"

В общем, awk принимает несколько пар / search / {command}.Если / search / отсутствует, по умолчанию используются все строки, а если {command} отсутствует, по умолчанию выводится на печать.

Вот дополнительная логика, необходимая для получения ожидаемых результатов:

#!/bin/bash
awk -v OFS=, '
BEGIN { print "PATH, FILENAME, SIZE, TIMESTAMP" }
/[\\]/    { path=$0 }
$2 ~ /A/  {print path,$1,$3,$4 " " $5 " " $6 " " $7 }  
' "$@"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...