выберите поля с помощью sed - PullRequest
0 голосов
/ 16 марта 2010

Используя только grep и sed, можно ли преобразовать вывод ls -l * в следующее:

-rw-r - r--nda.txt

-rw-r - r-- annuaire.txt

Спасибо!

Ответы [ 7 ]

3 голосов
/ 16 марта 2010

видя, что вы уже получили свой "ответ", вот одно из самых простых решений

 ls -l | tr -s " "| cut -d" " -f1,8-

@ OP, sed "мощный", но иногда простота больше powerful.

Примечание: не разбирайте такие имена файлов.

2 голосов
/ 25 июня 2012
ls -altrh| sed -E 's/ +.+ / / g'

Или вы можете использовать ssed, который поддерживает регулярные выражения Perl.

Я решил вашу проблему с помощью программы ssed, которую вы можете установить в любой системе Posix, ssed означает super sed. поэтому я сделал ls -latrh в своем домашнем каталоге.

telsa:~ mahmoh$ ls -altrh

total 136
drwxr-xr-x   5 root    admin   170B Jun 24 00:27 ../
drwx------+  4 mahmoh  staff   136B Jun 24 00:27 Pictures/
drwx------+  3 mahmoh  staff   102B Jun 24 00:27 Music/
drwx------+  3 mahmoh  staff   102B Jun 24 00:27 Movies/
drwx------+  3 mahmoh  staff   102B Jun 24 00:27 Desktop/
-rw-------   1 mahmoh  staff     3B Jun 24 00:27 .CFUserTextEncoding
drwxr-xr-x+  5 mahmoh  staff   170B Jun 24 00:27 Public/
drwx------+  5 mahmoh  staff   170B Jun 24 02:19 Documents/
-rw-r--r--@  1 mahmoh  staff    15K Jun 24 02:19 .DS_Store
drwx------@ 36 mahmoh  staff   1.2K Jun 24 14:48 Library/
-rw-r--r--   1 mahmoh  staff   279B Jun 24 15:27 .profile~
-rw-r--r--@  1 mahmoh  staff    14K Jun 24 15:29 .vimrc
-rw-r--r--   1 mahmoh  staff   279B Jun 24 15:30 .profile
drwx------   2 mahmoh  staff    68B Jun 24 15:46 .Trash/
drwxr-xr-x   3 mahmoh  staff   102B Jun 24 20:26 .mplayer/
-rw-------   1 mahmoh  staff   3.5K Jun 24 22:11 .bash_history
-rw-------   1 mahmoh  staff    42B Jun 24 23:25 .lesshst
-rw-r--r--   1 mahmoh  staff   3.6K Jun 24 23:39 temp
-rw-r--r--   1 mahmoh  staff   3.3K Jun 24 23:43 rtorrent.rc~
drwxr-xr-x   5 mahmoh  staff   170B Jun 24 23:52 torrents/
-rw-r--r--   1 mahmoh  staff   3.3K Jun 24 23:56 .rtorrent.rc~
-rw-------   1 mahmoh  staff   3.7K Jun 24 23:56 .viminfo
-rw-r--r--   1 mahmoh  staff   3.3K Jun 24 23:56 .rtorrent.rc
drwxr-xr-x+ 25 mahmoh  staff   850B Jun 24 23:56 ./
drwx------+ 10 mahmoh  staff   340B Jun 24 23:58 Downloads/

Теперь смотрите.

telsa:~ mahmoh$ ls -altrh| ssed -R -e 's/ +.+ /    / g'
total 136
drwxr-xr-x    ../
drwx------+    Pictures/
drwx------+    Music/
drwx------+    Movies/
drwx------+    Desktop/
-rw-------    .CFUserTextEncoding
drwxr-xr-x+    Public/
drwx------+    Documents/
-rw-r--r--@    .DS_Store
drwx------@    Library/
-rw-r--r--    .profile~
-rw-r--r--@    .vimrc
-rw-r--r--    .profile
drwx------    .Trash/
drwxr-xr-x    .mplayer/
-rw-------    .bash_history
-rw-------    .lesshst
-rw-r--r--    temp
-rw-r--r--    rtorrent.rc~
drwxr-xr-x    torrents/
-rw-r--r--    .rtorrent.rc~
-rw-------    .viminfo
-rw-r--r--    .rtorrent.rc
drwxr-xr-x+    ./
drwx------+    Downloads/
2 голосов
/ 16 марта 2010
 ls -l | sed 's/[ ]+//g' | sed 's/ [0-9].*:.[0-9]/ /g'
1 голос
/ 16 марта 2010
ls -l | sed 's/^\([^\t ]\+\)\(.*:.[^ \t]\+\)\(.\+\)/\1 \3/'
1 голос
/ 16 марта 2010

Вот рабочая команда.Немного сложнее то, что ls -l будет печатать год для файлов, которые старше некоторого времени (6 месяцев) и hh:mm для более новых файлов.

ls -l  | sed 's/ .*[0-9]* .*[A-Z][a-z][a-z] [ 0-9][0-9] \{1,2\}[0-9][0-9]:*[0-9][0-9] / /'

Для следующего примера

drwxr-xr-x 39 корень корень 1024 19 февраля 08:58 /

начальный .* будет соответствовать 39 root root 1024, а затем остальные регулярные выражения соответствуют названию месяца(так что вы можете ограничить az меньшим количеством символов) с последующим годом или чч: мм.

0 голосов
/ 21 февраля 2014

почему бы не использовать awk вместо sed? awk создан для подобных вещей.

см. эту страницу руководства , чтобы узнать больше о полях в awk.

0 голосов
/ 16 марта 2010

Как это?

ls -l | sed 's/ [0-9].*:.[0-9] / /' | less

Превращает

-rw-r--r--  1 tomislav tomislav     609 2009-11-26 10:32 Test.class
-rw-r--r--  1 tomislav tomislav      46 2009-12-14 12:16 test.groovy

в

-rw-r--r-- Test.class
-rw-r--r-- test.groovy
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...