Как сортировать коллекцию строк из разных файлов?

Я хочу сортировать вторую строку в каждом файле вторым столбцом, а также печатать имя соответствующего файла. Я делаю это так:

rm tmp; for filename in file*; do num=`head -2 $filename | tail -1 | awk '{print $2}'`; echo "$filename $num" >> tmp; done; sort -n -k2,2 tmp 

Может ли это быть сделано лучше, не включая tmp файл?

2 Solutions collect form web for “Как сортировать коллекцию строк из разных файлов?”

Пытаться:

 $ awk 'FNR == 2' file1 file2 filen | sort -n -k2,2 

С gawk вы можете использовать следующий nextfile для повышения эффективности:

 $ gawk 'FNR == 2 {print FILENAME,$2; nextfile}' file1 file2 filen | sort -n -k2,2 

или вы можете написать свою собственную функцию nextfile в другой реализации awk .

Если у вас нет gawk , вы можете использовать perl для более портативного:

 $ perl -anle 'print "$ARGV $F[1]" and close ARGV if $. == 2' file1 file2 filen | sort -n -k2,2 
 for f in file* ; do { read line read na num na } <"$f" printf '%s\t%s\n' "$f" "$num" done | sort -t\<tab> -n -k2,2 

Хотя трудно сказать наверняка, потому что вы не замечаете разделитель полей, это предполагает, что awk умолчанию, но делает работу с родным сценарием оболочки, я думаю.

  • динамическое отображение текущего процесса?
  • Как создать скрипт для отправки электронной почты по telnet?
  • Печать цветного текста с использованием скрипта
  • Не может mv в подкаталог себя
  • Буфер памяти в сценарии bash
  • Shell Script для удаления двойных кавычек в пределах значения столбца
  • Копировать команду с аргументами командной строки
  • Как избежать пробелов и т. Д. В переданной переменной, для системного вызова cp в awk
  • переменная конкатенация не работает?
  • Выберите строки, начинающиеся с определенных номеров
  • Параметр одиночного кавычки сценария Bash с параметром globbing
  • Преобразование многострочных линий в одну строку с помощью SED
  • Interesting Posts

    Помощь в командах UNIX – найти

    Негативы запуска процессов с приоритетом в реальном времени?

    Как использовать wget для загрузки всех ссылок с моего сайта и сохранения в текстовый файл?

    Возможно ли иметь несколько псевдонимов хостов SSH?

    Аргу слишком длинная ошибка при использовании find

    Как измерить тактовый импульс моего компьютера вручную?

    Как сделать экран -R прикрепленным к самой молодой отдельной сессии?

    Где находится файл буфера обмена?

    Что значит иметь знак минуса в качестве первого символа команды в выводе htop?

    Trouble w / bash программируемое завершение совпадений с именами файлов

    Как сделать две команды потреблять входные данные из stdin последовательно?

    Как использовать данные Hiera из исходного хранилища?

    Найдите файлы с определенным форматом файлов, коту, каждый с файлом заголовка, и сохраните результат в исходный файл для каждого такого файла

    Терминал с кнопкой «повторить последний»

    Создайте массив в сценарии bash из установленных внешних USB-накопителей на macOS

    Linux и Unix - лучшая ОС в мире.