2010-03-16 19 views
0

只使用grep和sed的,是有辦法,我可以等轉換的ls -l *輸出到這個選擇字段r - r-- annuaire.txt使用sed

謝謝!

+2

做功課? – ghostdog74 2010-03-16 10:55:48

+0

是的:)和sed是如此強大! – Zenet 2010-03-16 11:00:58

+1

請參閱http://mywiki.wooledge.org/ParsingLs – 2010-03-16 11:35:02

回答

-1

是否這樣?

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 
+1

你確定它有效嗎? – ghostdog74 2010-03-16 11:27:15

+0

'g'是不必要的。 – 2010-03-16 11:35:33

+0

對於'ls'打印年份而不是hh:mm的文件,這將失敗。 – hlovdal 2010-03-16 11:38:30

3

看到你已經得到了你的 「答案」,這裏的簡單的解決方案

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

@OP之一, sed是「強大的」,但有時候,簡單更powerful

附註:不要解析這樣的文件名。

+0

我同意你ghostdog,但我只是需要學習sed的幾個技巧...謝謝:) – Zenet 2010-03-16 18:40:00

+0

在所有給出的答案中,我認爲這是從健壯性的角度來看最好的。所有的sed答案都會失敗,如果文件名中冒號,空格和/或數字不幸組合在一起。這種解決方案不會以這種方式失敗。 – hlovdal 2010-03-16 21:55:48

1

這是一個工作命令。稍微有點棘手的是,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-×39根根1024年02月19 8時58分/

起始.*將匹配39 root root 1024然後的其餘部分正則表達式與月份名稱相匹配(因此您可能會將az限制爲較少的字符),後跟year或hh:mm。

+0

這不起作用 – ghostdog74 2010-03-16 11:31:50

+0

什麼不起作用?我已經在solaris 10機器上測試並驗證了該命令。 – hlovdal 2010-03-16 11:35:27

2
ls -l | sed 's/[ ]+//g' | sed 's/ [0-9].*:.[0-9]/ /g' 
+0

嘿,測試你的命令,並注意到第一部分| sed's/[] + // g'真的沒有多大作用:)它的工作原理很好,它是否適用於特定用途? – Zenet 2010-03-16 18:42:21

+0

我假設第一個sed命令與ghostdog74的回答中的'tr -s「」'相同。正確的語法是'sed's/[] \ +// g''。 – hlovdal 2010-03-16 21:49:29

1
ls -l | sed 's/^\([^\t ]\+\)\(.*:.[^ \t]\+\)\(.\+\)/\1 \3/' 
+0

waw!爲我工作,謝謝:) – Zenet 2010-03-16 18:38:09

2
ls -altrh| sed -E 's/ +.+// g' 

或者你可以用它支持Perl的正則表達式ssed去。

我使用ssed程序解決了您的問題,您可以將它安裝在任何Posix系統中,ssed代表超級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/ 
[email protected] 1 mahmoh staff 15K Jun 24 02:19 .DS_Store 
[email protected] 36 mahmoh staff 1.2K Jun 24 14:48 Library/ 
-rw-r--r-- 1 mahmoh staff 279B Jun 24 15:27 .profile~ 
[email protected] 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/ 
[email protected] .DS_Store 
[email protected] Library/ 
-rw-r--r-- .profile~ 
[email protected] .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/ 
+0

從未聽說過超級sed之前。大起大落。 – the0ther 2014-02-21 19:44:08

0

爲什麼不使用awk代替sed? awk是爲這樣的東西而構建的。

請參閱this manual page瞭解有關awk中的字段的更多信息。