2011-12-22 60 views
2

我想讀取文件的第二行:閱讀,直到空間

$(sed -n 2p $file) 

這工作得很好,但我想讀行,直到第一個空間。 任何想法如何做到這一點?

+0

你是否在使用$(...)命令替換原因?通常我們會看到myDate =「$(sed ... file)」。祝你好運。 – shellter 2011-12-22 17:22:54

+0

已添加不使用管道的備用解決方案。 – 2011-12-22 17:37:36

回答

2

如何:

$ sed -n 2p $file | cut -d " " -f1 
1

你可能想嘗試這樣的事:

$(sed -n '2s/ .*//p' $file) 

這就像你的,除了s命令取代後(.*)的空間和任何與沒有任何東西,即刪除該行的其餘部分。

0

您可以這樣做,將您的行分割成數組,然後每次只讀一個單詞。

while IFS=" " read -a word; do # storing the line separated by space in an array 
    echo "${word[0]}"; # calling the first array element which is indexed at 0 
done < <(head -n 2 file | tail -n 1) # process substitution of fetching only second line 

測試:

[jaypal:~/Temp] cat file 
a 212 
b 323 
c 23 
d 45 
e 54 
f 102 

[jaypal:~/Temp] while IFS=" " read -a word; do 
echo "${word[0]}"; 
done < <(head -n 2 file | tail -n 1) 
b 

或者,如果你只是想用一個班輪一個快速的解決方案,然後下面的工作就好了 -

awk 'NR==2{print $1}' filename 

測試:

[jaypal:~/Temp] awk 'NR==2{print $1}' file 
b