2015-04-29 81 views
1
$ cat /etc/sudoers  
inavg7ey evl0000332,evl0000333,evl0000234,evl0000999,evs99234456,\\ 
evl3300987,evl3344567,evlser999,eul000123,evs3300123,evs3300124,\\ 
(root,jboss,superss) NOPASSWD:ALL 

inavgmcn evl0000332,evl0000333,evl0000234,evl0000999=(all,wasadmin,\\ 
jboss,superss) NOPASSWD:ALL 

我想用第二行打印inavg7ey用戶的詳細信息(如果有更多的行,我也想要它們)..任何人都可以幫助我嗎?我已經試過這樣:賽後打印多條線

awk '/inavg7ey/' /etc/sudoers 

但它顯示只有這一個:

inavg7ey evl0000332,evl0000333,evl0000234,evl0000999,evs99234456,\

+1

使用'awk'解析支持續行的文件將需要知道什麼是續行看起來像和處理是自己(強有力地做)。你總是可以使用[這裏]的解決方案之一(http://stackoverflow.com/a/17914105/258523)。 –

+0

'awk'/ inavg7ey/&& \ \\\\ $/{print; getline; print}'' –

+0

感謝Champ,現在它的顯示匹配模式也是 –

回答

-1

您可以使用:

awk'/ inavg7ey/{c = N} c & & c--'/ etc/sudoers

N - here is number of line after match including match

而另一種解決方案:

的awk '/ navg7ey /,/^$ /' 的/ etc/sudoers文件

awk -MAY grep的,在2種模式之間的文件,
navg7ey - 這是grep的第一種模式; (^$ - 表示空行)

+0

是的,它的工作..非常棒 我不能指望你們所有人都能做出這種快速反應... 祝你有美好的一天...再次感謝 –

+0

一個小問題,但在這裏,當我執行上述命令時,它顯示文件中包含其他名稱的所有行 awk'/ inavg7ey/{c = 9} c && c_'list [root @ dasari9 scripts]#vi list [root @ dasari9 scripts]#awk'/ inavg7ey/{c = 9} c && c_'list inavg7ey ramdas,evl0000332,evl0003322,evs2233999,\\ evl3300999,evs3300142,evl2232232,evh334490 ,evl009o9o,\\ =(根)NOPASSWD:ALL inavgmcn evs300132,evl3333333,3vsfjhasad,\\ evl1212123,12312312hh,asdasdasd,\\ =(根)NOPASSWD:ALL 我想看僅inavg7ey用戶細節 –

+3

@Ramdas這就是爲什麼向我們展示幾行樣本輸入非常重要,而不僅僅是您想要提取的文件片段。選擇你想要的線條總是微不足道的,但更難以選擇你不想要的線條。在這一點上,您還沒有向我們展示任何能夠讓我們找出更強大的解決方案或幫助您調試當前問題的方法。編輯你的問題以顯示更有用的輸入/輸出 - 在評論中提供信息是沒有用的,因爲它不能被格式化以匹配你的真實文件。我強烈懷疑你真正想要的只是在'\\\'後面加入行。 –

0

您應該爲此使用grep。這將匹配

grep -A2 inavg7ey /etc/sudoers 

- 編輯 -

這一切變得更容易,如果先取出換行後打印2行。這將在一行上打印每個用戶。十大隻需使用grep可以得到正確的用戶

cat /etc/sudoers | sed ':a;N;$!ba;s/\\\\\n//g' 

cat /etc/sudoers | sed ':a;N;$!ba;s/\\\\\n//g' | grep inavg7ey 
+0

感謝您的評論,在這裏我的查詢的一部分是清除,但我看到的是什麼當我試圖獲取用戶信息使用該命令顯示此用戶正常預期..這裏爲其他用戶有超過3至4行..對於每個用戶不是很好的做法擴大號碼和獲得信息 顯然我是什麼我的意思是我想知道有多少用戶有sudo訪問權限,以及他們有多少盒子可以使用awk,grep Utility用於審覈root和其他應用程序用戶 –