Parse all column elements from a linux bash command output
bash, linux, string-parsing
Solution
Use awk like this:
awk -v col=7 '{print $col}' file
Or to print 2 columns:
awk -v col1=2 -v col2=7 '{print $col1, $col2}' file
OR to make it print multiple columns using a colon delimited list:
awk -v col='2:7' '
BEGIN {n = split (col, arr, /:/)}
n {
for (i=1; i in arr; ++i)
printf "%s%s", $arr[i], (i < n ? OFS : ORS)
}' file
Problem
I would like to parse the column elements of the output from the command lsscsi. Here is a sample output, ``` # lsscsi [0:0:0:0] disk ATA VBOX HARDDISK 1.0 /dev/sda [0:0:1:0] disk ATA VBOX HARDDISK 1.0 /dev/sdb [1:0:1:0] disk ATA VBOX HARDDISK 1.0 /dev/sdc ``` Example if I want column 2, my output should be, ``` disk disk disk ``` If cloumn 7, ``` /dev/sda /dev/sdb /dev/sdc ``` Thanks