преобразование строк в одну

не могли бы вы помочь объединить строки 9X_gawk во входном файле и вывести вывод, как показано 9X_awk-formatting ниже, в порядке убывания.

входной файл.txt

TerminalA/admin#
   51% used 
TerminalB/admin#
   62% used
TerminalC/admin#
   42% used

outputfile 9X_linux должен содержать, как показано ниже, по 9X_nawk одной строке для каждого терминала.

TerminalB/admin# 62% used
TerminalA/admin# 51% used
TerminalC/admin# 42% used

Ниже 9X_gawk приведен код, который я пробовал:

awk -f process1.awk | sort -t: -k1,2rn > output.txt

где скрипт 9X_nawk awk:

$ cat process1.awk
/^$/  { print " " }
!/^$/ { printf("%s ",$0) }

6
0
4
Общее количество ответов: 4

Ответ #1

Ответ на вопрос: преобразование строк в одну

С показанными образцами попробуйте выполнить 9X_gawk код awk.

awk '{sub(/\r$/,"")} FNR%2==0{print val OFS $0 | "sort -nrk2";next} {val=$0}' Input_file

ИЛИ: Если вы хотите удалить лишние пробелы 9X_linux перед строкой %, которые, я думаю, должны 9X_nawk быть удалены в соответствии с показанными 9X_mawk примерами, попробуйте следующее:

awk '
{sub(/\r$/,"")}
FNR%2==0{
  sub(/^ +/,"")
  print val OFS $0
  next
}
{
  val=$0
}
' Input_file | sort -nrk2

Объяснение:

  • Проверка условия FNR%2==0, чтобы убедиться, что номер строки четный, затем выполните следующие действия.
  • Вывод значения переменной val, за которым следует OFS, за которым следует $0(текущая строка).
  • использование | "sort -nrk2" для дальнейшего вывода в основном сортирует вывод в обратном/возрастающем порядке 2-го столбца.
  • next пропустит все дальнейшие утверждения отсюда.
  • Оператор {val=$0} сохранит значение текущей строки в переменной val. Этот оператор будет выполняться только в том случае, если это нечетный номер строки.

13
0

Ответ #2

Ответ на вопрос: преобразование строк в одну

как perl oneliner:

perl -0777 -pE 's/\n\s+/ /g' /tmp/xx2 | sort -rk2

Сначала мы говорим Perl 9X_mawk прочитать весь файл (slurp) вместо того, чтобы 9X_awk-formatting читать его построчно. Это может не работать 9X_linux с файлами, которые не помещаются в ОЗУ. Затем 9X_awk-formatting мы используем регулярное выражение для преобразования 9X_linux разрывов строк и пробелов в один пробел 9X_awk-formatting и обратной сортировки по второму полю с 9X_mawk помощью sort -rk2

10
0

Ответ #3

Ответ на вопрос: преобразование строк в одну

Использование простого awk с сортировкой

$ awk ' { a=$0;getline; print a, $0 } ' input.txt | sort -k2 -nr 
TerminalB/admin#    62% used
TerminalA/admin#    51% used 
TerminalC/admin#    42% used
$ 

Или 9X_nawk используя автономный awk

$ awk ' BEGIN { PROCINFO["sorted_in"]="@ind_num_desc" } { a=$0;getline; b[$0]=a "" $0 } END { for(i in b) print b[i] } ' input.txt  
TerminalB/admin#   62% used
TerminalA/admin#   51% used 
TerminalC/admin#   42% used
$ 

2
0

Ответ #4

Ответ на вопрос: преобразование строк в одну

# 

9X_linux

2
0