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
'programing' 카테고리의 다른 글
std:: wstring VS std:: string (0) | 2023.04.10 |
---|---|
셀 내 줄바꿈 문자 추가(CSV) (0) | 2023.04.10 |
문서의 일부에는 문서 검사기가 삭제할 수 없는 개인 정보가 포함될 수 있습니다. (0) | 2023.04.10 |
R에서 Excel 날짜 형식을 적절한 날짜로 변환하는 방법 (0) | 2023.04.10 |
Bash 스크립트의 스크립트파일명은 어떻게 알 수 있나요? (0) | 2023.04.10 |