sth*_*sth 354
head
获取文件中的第一行,该-n
参数可用于指定应提取的行数:
line=$(head -n 1 filename)
Run Code Online (Sandbox Code Playgroud)
gho*_*g74 55
使用bash读取第一行,使用read
语句.例如
read -r firstline<file
Run Code Online (Sandbox Code Playgroud)
firstline
将是你的变量(不需要分配给另一个)
fed*_*qui 12
这足以存储filename
变量的第一行$line
:
read -r line < filename
Run Code Online (Sandbox Code Playgroud)
我也喜欢awk
这个:
awk 'NR==1 {print; exit}' file
Run Code Online (Sandbox Code Playgroud)
要存储行本身,请使用var=$(command)
语法.在这种情况下,line=$(awk 'NR==1 {print; exit}' file)
.
甚至sed
:
sed -n '1p' file
Run Code Online (Sandbox Code Playgroud)
与之相当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
Run Code Online (Sandbox Code Playgroud)
jac*_*bot 10
line=$(head -1 file)
Run Code Online (Sandbox Code Playgroud)
会工作得很好.(如前所述).但
line=$(read -r FIRSTLINE < filename)
Run Code Online (Sandbox Code Playgroud)
read
内置的bash命令会稍快一些.
问题没有问哪个最快,但要添加到 sed 答案中, -n '1p' 表现不佳,因为仍然在大文件上扫描模式空间。出于好奇,我发现 'head' 以微弱优势胜过 sed:
# 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
Run Code Online (Sandbox Code Playgroud)
只是echo
源文件的第一个列表到目标文件中。
echo $(head -n 1 source.txt) > target.txt
Run Code Online (Sandbox Code Playgroud)