Во время игры с 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}'
Запятая имеет решающее значение здесь.
Просто измените строку на
ls -la >> a.txt ; awk {'print $5 " " $1'} a.txt ;
, это должно напечатать вывод с пробелами.
Надеюсь, это поможет.
Редактировать:
Как предложено Макнисом , вы можете использовать printf, который обеспечит вам хороший выходной формат
ls -la >> a.txt ; awk {'printf ("%5s\t%s\n", $5, $1)'} a.txt ;
Я знаю, что это старая ветка, но я только учусь и считаю эти посты полезными. Моим лучшим решением было использовать gawk для вставки пробелов между переменными для вас.
ls -la | gawk '{print $1, $9}'
Чтобы разместить пробел между аргументами, просто добавьте " "
, например, 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
для дальнейших опций. Например, чтобы напечатать день модификации, проверьте этот пример .
Простой способ получить вкладки:
awk {'print $5"\t"$1'}