2016-04-20 41 views
0

我想做一個grep打印文本模式(usr1234)的目錄。 迄今爲止我能做的最好的事情是保存文件名和行被發現。 usr1234可以有3位或4:usr123或usr1234Ubuntu的grep,將顯示一個字模式,並分配給變量

這是我目前的grep:

usrcode=$(grep -oPnr 'usr[0-9][0-9][0-9][0-9]' filename) 

,其結果是:

filename/filelocation/file:7:usr1234 filename/filelocation2/file2:8:usr1234 filename/filelocation3/file3:7:usr1234 

所有我需要的是存儲usr1234(或usr123視情況而定)

+0

所以你不想要的文件的名稱將被打印?你用[grep -h](http://stackoverflow.com/a/19406829/1983854)試過了嗎? – fedorqui

+0

grep -h什麼都不打印 –

+0

grep -ohnr'usr [0-9] [0-9] [0-9] [0-9]'/ customers/$ 1更接近。它打印:7:usr1234 7:usr1234 8:1234 8:usr1234 9:usr1234 9:usr1234 –

回答

0

管它做的sed:

​​

像這樣:

usrcode=$(grep -oPnr 'usr[0-9][0-9][0-9][0-9]' filename | sed 's/\(.*\)\(usr[0-9]*\)/\2/') 
+0

關閉,但它打印usr1234 usr1234 usr1234 usr1234 usr1234 –

+0

它適用於我的例子。 你總是可以用awk將它剪成第一個短語: awk'{print $ 1}' like: usrcode = $(grep -oPnr'usr [0-9] [0-9] [0-9] [0 -9]'filename | sed's/\(。* \)\(usr [0-9] * \)/ \ 2 /')| awk'{print $ 1}' – Filip

1

幸運的一個:

usrcode=$(grep -ohr 'usr[0-9][0-9][0-9][0-9]' filename | head -1) 
相關問題