2011-12-22 10 views
2

私は、ファイルの2行目を読みたいまで読み:はスペース

$(sed -n 2p $file) 

これはかなりうまく動作しますが、私はのみ非常に最初のスペースまでのラインを読むことをお勧めします。 これを行うにはどのようなアイデアですか?

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

sコマンドはそれの後にスペースと何かを置き換える以外それは、あなたのようなものだ(.*)を持つ:あなたはこのような何かをしようとする場合があります

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

理由のために$(...)コマンド置換を使用していますか?通常はmyDate = "$(sed ... file)"と表示されます。がんばろう。 – shellter

+0

パイプを使用せずに代替ソリューションを追加しました。 –

答えて

2

つまり、行の残りの部分を削除します。

1

:これはどのように

0

これを行うと、配列内の行を分割し、一度に1語ずつ読むことができます。

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