读到太空

时间:2011-12-22 16:27:59

标签: shell unix sed

我想阅读文件的第二行:

$(sed -n 2p $file)

这非常有效,但我想在第一个空格之前阅读 这一行。 任何想法如何做到这一点?

3 个答案:

答案 0 :(得分:2)

这个怎么样:

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

答案 1 :(得分:1)

你可能想尝试这样的事情:

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

它就像你的,除了s命令用空格替换空格及其后的任何内容(.*),即删除其余部分。

答案 2 :(得分: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