Во время игры с awk
Я пришел казнить:
ls -la >> a.txt ; awk {'print $5 $1'} a.txt ;
Это дает результат, подобный:
53277-rw-------52347-rw-------
Как я могу получить пробел между этими двумя друзьями вывода?
Во время игры с awk
Я пришел казнить:
ls -la >> a.txt ; awk {'print $5 $1'} a.txt ;
Это дает результат, подобный:
53277-rw-------52347-rw-------
Как я могу получить пробел между этими двумя друзьями вывода?
Просто измените строку на
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 ;
Другой специфичный для awk метод - использовать "разделитель полей вывода".
ls -la | awk -v OFS='\t' '{print $5, $1}'
Запятая здесь имеет решающее значение.
Простой способ получить вкладки - это:
awk {'print $5"\t"$1'}
Я знаю, что это старая тема, но я только учусь и нашел эти сообщения полезными. Моим лучшим решением было использовать 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 40967c1c.txt 21 8 81a4 501 20 1000004 242236595 1 0 0 1460261322 1460260486 1460260486 1460260486 4096
который напечатает вам машинный вывод (в краткой форме), так что вы сможете получить именно то, что вам нужно. Затем используйте -c
чтобы использовать определенный формат, или используйте awk
, cut
или read
чтобы получить правильные столбцы.
Проверять stat --help
для получения дополнительных вариантов. Например, чтобы напечатать день внесения изменений, установите флажок этот пример.
Возможный дубликат Как мне выбрать поле/столбец из выходных данных `ls -l'?
@kenorb и близкие избиратели, связанный дубликат вообще не является дубликатом. Они уже знают, как печатать поля по предпосылке (awk {'print $5 $1'} a.txt
). Они спрашивают, как поставить пробел между полем № 1 и полем № 5.
В качестве совета, вы не должны анализировать выходные данные ls
. Рано или поздно это ударит вас в спину.
В awk, чтобы объединить две строки, вы просто размещаете их рядом - print $5 $1