Во время игры с awk я пришел выполнить:
ls -la >> a.txt ; awk {'print $5 $1'} a.txt ;
Это дает вывод, например:
53277-rw-------
52347-rw-------
Как я могу получить пространство между этими двумя друзьями вывода?
Другая особенность awk, использующая «разделитель выходных полей»
ls -la | awk -v OFS='\t' '{print $5, $1}'
Здесь запятая имеет решающее значение.
Я знаю, что это старый поток, но я просто изучаю и нашел эти сообщения полезными. Моим лучшим решением было использование gawk для вставки пробелов между переменными для вас.
ls -la | gawk '{print $1, $9}'
Простой способ получить вкладки:
awk {'print $5"\t"$1'}
Чтобы поместить пространство между аргументами, просто добавьте " ", например. awk {'print $5" "$1'}.
Однако не рекомендуется анализировать вывод команды ls, поскольку он не является надежным, а выход - для людей, а не для сценариев. Поэтому используйте альтернативные команды, такие как find или stat.
Ниже приведен пример использования GNU stat:
$ stat -t *
001.txt 23 8 81a4 501 20 1000004 242236402 1 0 0 1460260387 1460260239 1460260239 1460260194 4096
7c1c.txt 21 8 81a4 501 20 1000004 242236595 1 0 0 1460261322 1460260486 1460260486 1460260486 4096
, который напечатает ваш машинный вывод (в краткая форма), поэтому вы можете получить именно то, что вам нужно. Затем используйте -c для использования определенного формата или используйте awk, cut или read, чтобы получить правильные столбцы.
Проверьте дополнительные параметры stat --help. Например, чтобы напечатать день модификации, проверьте синтаксический анализ команды ls .