我必须在文件的第一行放入一个bash变量。我想这是用grep命令,但是它可以用来限制行数吗?
答案 0 :(得分:334)
head
从文件中获取第一行,-n
参数可用于指定应提取的行数:
line=$(head -n 1 filename)
答案 1 :(得分:47)
使用bash读取第一行,使用read
语句。例如
read -r firstline<file
firstline
将是您的变量(无需分配给其他人)
答案 2 :(得分:10)
line=$(head -1 file)
工作正常。 (如前所述)。但
line=$(read -r FIRSTLINE < filename)
将略微加快,因为read
是内置bash命令。
答案 3 :(得分:10)
这足以将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
答案 4 :(得分:4)
问题并不是要问哪个是最快的,而是添加到sed答案中,-n&#39; 1p&#39;由于仍然在大文件上扫描模式空间,因此性能很差。出于好奇,我发现&#39; head&#39;胜过sed:
// This is just your JSON string above.
var text = '{ "date_price": [ { "date": "Jan 2000", "price": 1394.46 }, { "date": "Feb 2000", "price": 1366.42 }, { "date": "Mar 2000", "price": 1498.58 }, { "date": "Apr 2000", "price": 1452.43 } ] }';
// Parse it as an object.
var obj = JSON.parse(text);
// Get the date_price property, which is an array already.
var result = obj.date_price;
// Some output here, to illustrate...
console.log(result);
for (var i = 0; i < result.length; i++) {
console.log(result[i]);
}
答案 5 :(得分:3)
将echo
源文件的第一个列表放入目标文件中。
echo $(head -n 1 source.txt) > target.txt