Я хочу читать вторую строку файла:Чтения до места
$(sed -n 2p $file)
Это работает довольно хорошо, но я хочу, чтобы прочитать строку только до самого первого места. Любые идеи, как это сделать?
Я хочу читать вторую строку файла:Чтения до места
$(sed -n 2p $file)
Это работает довольно хорошо, но я хочу, чтобы прочитать строку только до самого первого места. Любые идеи, как это сделать?
Как об этом:
$ sed -n 2p $file | cut -d " " -f1
Вы можете попробовать что-то вроде этого:
$(sed -n '2s/ .*//p' $file)
Это как у вас, за исключением того, команда s
заменяет пространство и ничего после него (.*
) с ничего, т.е. удаляет остальную часть линии.
Вы можете сделать это, чтобы разделить свою строку в массиве, а затем прочитать его по одному слову за раз.
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
Вы используете замену команды $ (...) по какой-либо причине? обычно мы увидим myDate = "$ (sed ... file)". Удачи. – shellter
Добавили альтернативное решение без использования труб. –