Пояснение к команде Linux

ОБНОВЛЕНИЕ

Исправлена ​​ошибка, из-за которой за некоторыми смайликами следовал вариант-селектор-16, в результате плохое форматирование.

См. ответ @jimmij для еще более оптимизированного сценария sed!

сд

 sed '/.\.\./ s/\(.\)\.\.\(\S*\)\s*\(.*\)\.\./\1\t\3\n \2\t/'

0
11.02.2016, 07:21
2 ответа

У вас есть большая часть технических деталей, но я думаю, вам не хватает семантики всего этого.

Одиночные кавычки в '^ 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, вызывал трудно понятные проблемы на другой машине. Так что остерегайтесь этого.

3
28.01.2020, 02:27

Одиночные кавычки '' используются для обозначения начала и конца символов.

-g флаг сравнения сортировки по общему числовому значению. Параметр

-r позволяет отсортировать вывод от самого высокого до самого низкого, поскольку вывод сортировки по умолчанию от самого низкого до самого высокого.

Параметр -k используется, если мы хотим выполнить сортировку по столбцу или позиции слова в строках текстового файла.

0
28.01.2020, 02:27

Теги

Похожие вопросы