[linux] 셸 명령 출력의 첫 줄 가져 오기

의 버전 번호를 읽으려고 할 때 vim무시해야 할 추가 행이 많이 표시됩니다. 설명서를 읽고 head다음 명령을 시도했습니다.

vim --version | head -n 1

이것이 올바른 접근 방식인지 알고 싶습니다.



답변

예, 이것이 명령에서 출력의 첫 줄을 가져 오는 한 가지 방법입니다.

명령이 동일한 방식으로 캡처하려는 표준 오류를 출력하는 경우 명령의 표준 오류를 표준 출력 스트림으로 리디렉션해야합니다.

utility 2>&1 | head -n 1

sed 1q(첫 번째 줄 이후 종료), sed -n 1p(첫 번째 줄만 인쇄하고 모두 읽기), awk 'FNR == 1'(첫 번째 줄만 인쇄하고 다시 모두 읽기) 등 첫 번째 줄을 캡처하는 다른 방법도 많이 있습니다 .


답변

다음을 사용합니다.

awk 'FNR <= 1' file_*.txt

@Kusalananda가 지적했듯이 명령 줄의 첫 번째 줄을 캡처하는 방법은 여러 가지가 있지만 head -n 1와일드 카드를 사용하면 추가 정보를 인쇄하므로를 사용하는 것이 최선의 선택이 아닐 수 있습니다. 변경 'FNR == i'하기 위해서는 'FNR <= i'제 I 라인을 얻을 수있다.

예를 들어, file_1.txt, … file_n.txt라는 이름의 파일이 n 개있는 경우 :

awk 'FNR <= 1' file_*.txt

hello
...
bye

그러나 head와일드 카드를 사용하면 파일 이름이 인쇄됩니다.

head -1 file_*.txt

==> file_1.csv <==
hello
...
==> file_n.csv <==
bye


답변