Как я понимаю от примера, Вы хотите распечатать строки и после того номера строки.
Для печати номера строки и затем строк можно использовать cat
или nl
:
$ cat -n test.txt
1 text example
2 text example
3 text example
4 text example
$ nl test.txt
1 text example
2 text example
3 text example
4 text example
Но нет никакой возможности распечатать числа после строк в cat
и nl
таким образом, можно использовать awk
:
$ awk '{print $0 "\t" NR}' test.txt
text example 1
text example 2
text example 3
text example 4
Проблема состоит в том, что awk анализирует вход с пробелом как разделители полей. Это делает для проблемы, когда у Вас есть пробел как часть поля.
Вместо того, чтобы анализировать вывод ls
, можно использовать stat(1)
получить то, что Вы хотите наряду с опцией оболочки удара "dotglob".
shopt -s dotglob # Enable * to match files starting with a dot
stat -c $'%A\t%U\t%s\t%Y\t%n' *
Строка формата производит поля, которые Вы хотели в формате, который Вы хотели. Использование $ '...' позволяет \t быть расширенным до вкладки. Вы могли вставить фактический символ табуляции и отбросить ведущий $, если бы Вы хотели.
Читайте bash(1)
страница справочника для получения дополнительной информации о dotglob, и обращает внимание на GLOBIGNORE. Читайте stat(1)
страница справочника для того, что можно вставить строку формата.
Как уже упомянуто, анализируя ls
лучший способ не состоит в том, чтобы распечатать содержание каталога. Вы проблема можете быть легко решены, как бы то ни было.
Поскольку файл/имя каталога всегда является последним столбцом (или столбцами), вместо того, чтобы печатать 7$, можно распечатать от 7$ для длительности столбца. Можно сделать это с:
substr($0, index($0, $7))
Таким образом, Ваша полная команда была бы:
ls -al --time-style=+%s . | awk '{if ($7 != ".." && $7 != "." && $1 != "total") print $1"\t"$3"\t"$5"\t"$6"\t" substr($0,index($0,$7));}'
Также отметьте ту проверку если $1 != "total"
не действительно хорошая идея, так как она не будет работать над локализованными системами (где total
может быть другое слово). Я предлагаю использовать NF>6
для обеспечения у Вас есть достаточно столбцов.
total
строка, пропустите строку 1: … && NR != 1
– Gilles 'SO- stop being evil'
11.10.2012, 01:21
stat
, но для меня было хорошо видеть способ сделать это с awk
. Я все еще узнаю о вещах как awk
, так substr метод и вещь NF было полезно.
– Rich
11.10.2012, 02:56
stat
. Мне нравится способность указать другие параметры или параметр в другом формате как этот. Информация GLIBIGNORE была также полезна.Спасибо! – Rich 10.10.2012, 11:28