ОБНОВЛЕНИЕ
Исправлена ошибка, из-за которой за некоторыми смайликами следовал вариант-селектор-16, в результате плохое форматирование.
См. ответ @jimmij для еще более оптимизированного сценария sed!
сд
sed '/.\.\./ s/\(.\)\.\.\(\S*\)\s*\(.*\)\.\./\1\t\3\n \2\t/'
У вас есть большая часть технических деталей, но я думаю, вам не хватает семантики всего этого.
Одиночные кавычки в '^ d'
удерживают оболочку, запускающую этот конвейер, от обработки символов в регулярном выражении (которым является '^ d'
) как «специальные». Например, $
- это регулярное выражение, означающее «конец строки». Оболочки также используют $
, чтобы пометить следующий токен как переменную оболочки, значение которой должно быть вставлено в строку. ^
- древний синоним для |
, конвейера stdout левой стороны в stdin правой стороны. Одиночные кавычки предотвращают особую обработку ^
.
Семантика не должна передавать строки вывода ls -l
, помеченные как каталоги. ls -l
помещает 'd' в качестве первого символа любой строки, относящейся к каталогу.
Параметр -g
для sort
заставляет команду искать представления чисел в ключевом поле и сортировать по числовому значению, а не по строкам. Порядок сортировки по умолчанию - от наименьшего к наибольшему, поэтому параметр -r
приводит к сортировке от наибольшего к наименьшему. -k 5
говорит использовать поле № 5 в качестве ключевого поля. sort
по умолчанию использует пробельные символы (пробелы, табуляции и т. Д.) Для разделения строки текста на «поля». На моем компьютере с Arch Linux пятое поле ls -l
, разделенное пробелами, - это размер файла в байтах.
Семантика здесь сортирует файлы по размеру в байтах, сначала самые большие.
Вы сортируете файлы (не каталоги) по размеру в байтах и помещаете информацию о двух самых больших файлах в текстовый файл.
С редакционной точки зрения обычно считается плохим тоном анализировать вывод ls
; см. Почему не следует анализировать вывод ls (1) . Исторически ls
имел разные форматы на разных машинах, и сценарий, предполагавший, скажем, размер файла, равный 5, вызывал трудно понятные проблемы на другой машине. Так что остерегайтесь этого.
Одиночные кавычки '' используются для обозначения начала и конца символов.
-g флаг сравнения сортировки по общему числовому значению. Параметр
-r позволяет отсортировать вывод от самого высокого до самого низкого, поскольку вывод сортировки по умолчанию от самого низкого до самого высокого.
Параметр -k используется, если мы хотим выполнить сортировку по столбцу или позиции слова в строках текстового файла.