簡體   English   中英

如何在bash腳本中獲取文件的第一行?

[英]How to get the first line of a file in a bash script?

我必須在文件的第一行放入一個bash變量。 我想這是用grep命令,但它是否有任何限制行數的方法?

head需要從文件中第一線,以及-n參數可用於指定多少線應該提取:

line=$(head -n 1 filename)

使用bash讀取第一行,使用read語句。 例如

read -r firstline<file

firstline將是你的變量(不需要分配給另一個)

這足以將第一行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)


當我們用seq 10提供read時,查看樣本,即1到10的數字序列:

$ read -r line < <(seq 10) 
$ echo "$line"
1

$ line=$(awk 'NR==1 {print; exit}' <(seq 10))
$ echo "$line"
1
line=$(head -1 file)

會工作得很好。 (如前所述)。

line=$(read -r FIRSTLINE < filename)

因為read是內置的bash命令,所以會略快一些。

只需將源文件的第一個列表echo顯到目標文件中即可。

echo $(head -n 1 source.txt) > target.txt

問題並沒有問哪個是最快的,但是為了添加到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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM