Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Concatenate several awk command outputs in one command

Tags:

parsing

awk

**I have an input like as follows with many, many rows, and I need to parse all this file into a better format, could be a CSV file or JSON (maybe in the future). So I need to produce an outcome with columns delimited by a comma, thinking of being able to export the content in CSV file for now.

Get the name files

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

Get all the paths

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

Get the size of the files

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

Right now I have the individual commands to generate the desired result, however I have to find a way to put them in the same line of awk commands, or in a script.

One of the critical points that I have not been able to solve is to make column 1 of the outcome the path that delimits each block, for all the files in the block.

So I starting from this input: **

\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
like image 506
EEsparaquia Avatar asked Jun 12 '26 07:06

EEsparaquia


2 Answers

Here's a way of combining your awk command into a single script:

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

In general, awk takes multiple /search/ {command} pairs. If /search/ is missing, it defaults to all lines and if {command} is missing, it defaults to print.

Here's the additional logic you need to get your expected results:

#!/bin/bash
awk -v OFS=, '
BEGIN { print "PATH, FILENAME, SIZE, TIMESTAMP" }
/[\\]/    { path=$0 }
$2 ~ /A/  {print path,$1,$3,$4 " " $5 " " $6 " " $7 }  
' "$@"
like image 118
Mark Avatar answered Jun 14 '26 12:06

Mark


$ 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
like image 34
Ed Morton Avatar answered Jun 14 '26 12:06

Ed Morton



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!