How to get the first line of a file in a bash script?
Solution 1:
head
takes the first lines from a file, and the -n
parameter can be used to specify how many lines should be extracted:
line=$(head -n 1 filename)
Solution 2:
to read first line using bash, use read
statement. eg
read -r firstline<file
firstline
will be your variable (No need to assign to another)
Solution 3:
This suffices and stores the first line of filename
in the variable $line
:
read -r line < filename
I also like awk
for this:
awk 'NR==1 {print; exit}' file
To store the line itself, use the var=$(command)
syntax. In this case, line=$(awk 'NR==1 {print; exit}' file)
.
Or even sed
:
sed -n '1p' file
With the equivalent line=$(sed -n '1p' file)
.
See a sample when we feed the read
with seq 10
, that is, a sequence of numbers from 1 to 10:
$ read -r line < <(seq 10)
$ echo "$line"
1
$ line=$(awk 'NR==1 {print; exit}' <(seq 10))
$ echo "$line"
1
Solution 4:
line=$(head -1 file)
Will work fine. (As previous answer). But
line=$(read -r FIRSTLINE < filename)
will be marginally faster as read
is a built-in bash command.
Solution 5:
Just echo
the first list of your source file into your target file.
echo $(head -n 1 source.txt) > target.txt