programing

bash 스크립트에서 파일의 첫 줄을 가져오려면 어떻게 해야 합니까?

css3 2023. 4. 10. 22:07

bash 스크립트에서 파일의 첫 줄을 가져오려면 어떻게 해야 합니까?

파일의 첫 번째 줄에 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).


공급 시 샘플 보기read와 함께seq 10즉, 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'는 패턴 공간이 큰 파일에서 여전히 스캔되기 때문에 성능이 좋지 않습니다.호기심에서 나는 '헤드'가 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

파일의 첫 번째 줄만 읽고 변수에 저장합니다.

read var < file

echo $var # print only the first line of 'file'

언급URL : https://stackoverflow.com/questions/2439579/how-to-get-the-first-line-of-a-file-in-a-bash-script