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

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

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

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

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

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

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

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_mawk код awk.

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

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

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_awk прочитать весь файл (slurp) вместо того, чтобы 9X_awk читать его построчно. Это может не работать 9X_gawk с файлами, которые не помещаются в ОЗУ. Затем 9X_awk мы используем регулярное выражение для преобразования 9X_nawk разрывов строк и пробелов в один пробел 9X_mawk и обратной сортировки по второму полю с 9X_nawk помощью 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_awk
2
0