6 ответов:
headберет первые строки из файла, а-nпараметр может использоваться для указания количества строк, которые должны быть извлечены:line=$(head -n 1 filename)
чтобы прочитать первую строку с помощью bash, используйте
readзаявление. например,read -r firstline<file
firstlineбудет вашей переменной (не нужно назначать другой)
line=$(head -1 file)будет работать нормально. (Как и предыдущий ответ). Но
line=$(read -r FIRSTLINE < filename)будет немного быстрее, как
read- это встроенная команда bash.
этого достаточно, и сохраняет первую строчку
filenameв переменной$line:read -r line < filenameмне тоже нравится
awkдля этого:awk 'NR==1 {print; exit}' fileчтобы сохранить саму строку, используйте
var=$(command)синтаксис. В этом случаеline=$(awk 'NR==1 {print; exit}' file).или даже
sed:sed -n '1p' fileв эквиваленте
line=$(sed -n '1p' file).
посмотреть образец, когда мы кормим
readСseq 10, то есть последовательность чисел от 1 до 10:$ read -r line < <(seq 10) $ echo "$line" 1 $ line=$(awk 'NR==1 {print; exit}' <(seq 10)) $ echo "$line" 1
вопрос не спрашивал, Что быстрее, но чтобы добавить к ответу sed,- n '1p' плохо работает, так как пространство шаблонов все еще сканируется на больших файлах. Из любопытства я обнаружил, что "голова" побеждает САС узко:
# best: head -n1 $bigfile >/dev/null # a bit slower than head (I saw about 10% difference): sed '1q' $bigfile >/dev/null # VERY slow: sed -n '1p' $bigfile >/dev/null
Comments