Чтение до космоса - PullRequest
       10

Чтение до космоса

2 голосов
/ 22 декабря 2011

Я хочу прочитать вторую строку файла:

$(sed -n 2p $file)

Это работает довольно хорошо, но я хочу прочитать строку только до самого первого пробела.Есть идеи как это сделать?

Ответы [ 3 ]

2 голосов
/ 22 декабря 2011

Как насчет этого:

$ sed -n 2p $file | cut -d " " -f1
1 голос
/ 22 декабря 2011

Возможно, вы захотите попробовать что-то вроде этого:

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

Это похоже на ваше, за исключением того, что команда s заменяет пробел и что-либо после него (.*) ничем, т.е. удаляет остальныелинии.

0 голосов
/ 22 декабря 2011

Вы можете сделать это, чтобы разделить вашу строку в массиве и затем прочитать ее по одному слову за раз.

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...