[bash] bash 스크립트에서 파일의 첫 줄을 얻는 방법?
bash 변수에 파일의 첫 줄을 넣어야합니다. grep 명령을 사용하는 것 같지만 줄 수를 제한하는 방법이 있습니까?
답변
head
파일에서 첫 번째 줄을 가져오고 -n
매개 변수를 사용하여 추출 할 줄 수를 지정할 수 있습니다.
line=$(head -n 1 filename)
답변
bash를 사용하여 첫 번째 줄을 읽으려면 read
statement를 사용하십시오 . 예 :
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
with를 공급할 때의 샘플 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’가 제대로 수행되지 않습니다. 호기심으로 나는 ‘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