У меня есть следующий файл (Linux.txt)
linux-test01 linuxER
LinuxCV LinuxWE LinuxPL
LinuxDF LinuxXC LinuxSD LinuxAQ
, как печатать с использованием однострочника awk или perl для создания следующий вывод (вывод будет в новом файле - LinuxNewOrder.txt)
linux-test01
LinuxCV
LinuxDF
linuxER
LinuxWE
LinuxXC
LinuxPL
LinuxSD
LinuxAQ
, поэтому второй столбец будет после первого, а третий столбец будет после второго, и так далее.
Просто используя awk, печать 1-го столбца ввода, затем 2-го, ...
awk '{ for (i = 1; i <= NF; i++) a[i] = a[i] "\n" $i }
END { for (i in a) print substr(a[i], 2) }' Linux.txt
Используя массив a
, для каждого столбца i
объединяются поля $ i
, разделенные новой строкой, в a [i]
. В конце ввода a [i]
содержит полный столбец i. Наконец, столбцы печатаются по порядку, исключая "\ n", который был вставлен до
$ 1`.