2017-02-27 59 views
0

文件的一部分,我有一個包含文本如下文件:僅獲得使用SED或AWK

Directory /home/user/ "test_user" 
bunch of code 
another bunch of code 

我怎樣才能從這個文件只有/home/user/部分得到什麼?

我已經成功地使用awk -F '"' 'NR==1{print $1}' file.txt擺脫文件的休息,我很喜歡這個gettig輸出:

Directory /home/user/

我怎樣才能改變此命令只得到/home/user/一部分?我希望儘可能簡單。不幸的是,我無法修改此文件來添加/更改內容。

回答

2

隨着awk它應該是:

awk 'NR==1{print $2}' file.txt 

字段分隔符設置爲"是錯誤的,因爲它將該線進入這些領域:

$1 = 'Directory /home/user/' 
$2 = 'test_user' 
$3 = '' (empty) 

默認的記錄分隔符,這是[[:space:]]+,像這樣拆分:

$1 = 'Directory' 
$2 = '/home/user/' 
$3 = '"test_user"' 
-3

添加一定量的grep

grep Directory file.txt|awk '{print $2}' 
+2

'grep'是多餘的,因爲AWK可以搜索的圖案。使用'awk'/ Directory/{print $ 2}'' – hek2mgl

0

不知道爲什麼你使用的是-F"用作使分隔符。如果你刪除,那麼$2會得到你想要的。

awk 'NR==1{print $2}' file.txt 

您還可以使用awk執行print當行包含/home/user而不是計數記錄:

awk '/\home\/user\//{print $2}' file.txt 

在這種情況下,如果線路埋在文件中,或者如果你有多個實例,無論出現何處,您都可以獲得該名稱。

5

這應該工作最快的,明顯的,如果你的文件很大

awk '{print $2; exit}' file 

將打印第一行的第二場,並停止處理該文件的其餘部分。

+0

好的..... – hek2mgl

1

作爲替代,可以使用headcut

$ head -n 1 file | cut -d' ' -f2