如何在bash脚本中获取文件的第一行?
我必须在文件的第一行放入一个bashvariables。 我想这是与grep命令,但它是任何方式来限制行数?
 head从文件中取第一行, -n参数可以用来指定应该提取多less行: 
 line=$(head -n 1 filename) 
 使用bash读取第一行,使用read语句。 例如 
 read -r firstline<file 
  firstline行将是你的variables(不需要分配给另一个) 
 line=$(head -1 file) 
将工作正常。 (如前面的答案)。 但
 line=$(read -r FIRSTLINE < filename) 
  read是一个内置的bash命令将稍微快一点。 
 这就足够了,并将第一行的filename存储在variables$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) 。 
 当我们用seq 10提供read时,看到一个样本,也就是从1到10的数字序列: 
 $ read -r line < <(seq 10) $ echo "$line" 1 $ line=$(awk 'NR==1 {print; exit}' <(seq 10)) $ echo "$line" 1 
这个问题没有问哪个是最快的,但是为了增加sed的答案,-n'1p'performance不佳,因为模式空间仍然在大文件上被扫描。 出于好奇,我发现“头”胜过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 
 只需将源文件的第一个列表echo显到目标文件中。 
 echo $(head -n 1 source.txt) > target.txt