Как разделять поля с пробелом или вкладкой в ​​awk

Во время игры с awk я пришел выполнить:

ls -la >> a.txt ; awk {'print $5  $1'} a.txt ;

Это дает вывод, например:

53277-rw-------
52347-rw-------

Как я могу получить пространство между этими двумя друзьями вывода?

1
задан 12 April 2016 в 12:41

4 ответа

Другая особенность awk, использующая «разделитель выходных полей»

ls -la | awk -v OFS='\t' '{print $5, $1}'

Здесь запятая имеет решающее значение.

43
ответ дан 25 May 2018 в 03:07

Я знаю, что это старый поток, но я просто изучаю и нашел эти сообщения полезными. Моим лучшим решением было использование gawk для вставки пробелов между переменными для вас.

ls -la | gawk '{print $1, $9}'
3
ответ дан 25 May 2018 в 03:07
  • 1
    -1: Ничего нового. gawk, mawk или любой другой awk, все они вставляют пробелы, если вы используете запятую, что и есть этот ответ . – muru 19 September 2014 в 04:19
  • 2
    Должно быть ls -la | awk '{print $1, $9}'. Как сказал муру, gawk не требуется. – Nick Crawford 25 August 2015 в 19:33

Простой способ получить вкладки:

awk {'print $5"\t"$1'}
1
ответ дан 25 May 2018 в 03:07

Чтобы поместить пространство между аргументами, просто добавьте " ", например. 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 .

0
ответ дан 25 May 2018 в 03:07

Другие вопросы по тегам:

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