cat 명령에서 첫 번째 X 문자를 얻으시겠습니까?

cat 명령에서 첫 번째 X 문자를 얻으시겠습니까?

쉘 스크립트의 변수로 출력하는 텍스트 파일이 있습니다. 하지만 처음 50자만 필요합니다.

?를 사용해 보았지만 cat ${filename} cut -c1-50처음 50자보다 훨씬 더 많은 문자가 표시됩니다. 이는 줄을 찾기 때문일 수 있으며 cut(100% 확실하지는 않음) 텍스트 파일은 긴 문자열일 수 있습니다. 이는 실제로 상황에 따라 다릅니다.

cat파이프를 통해 명령의 첫 번째 X 문자를 가져올 수 있는 유틸리티가 있습니까 ?

답변1

head -c 50 file

그러면 처음 50바이트가 반환됩니다.

이 명령은 모든 운영 체제에서 항상 동일한 방식으로 구현되지는 않습니다. Linux 및 macOS에서 작동하는 방식은 다음과 같습니다. Solaris(11)에서는 /usr/gnu/bin/에서 gnu 버전을 사용해야 합니다.

답변2

cut데이터를 파이프하면 명령이 작동합니다.

cat ${file} | cut -c1-50 

또는 쓸데없는 cat 사용을 피하고 더 안전하게 만드세요.

cut -c1-50 < "$file"

위 명령은 처음 50자(또는 cut구현에 따라 바이트) 를 인쇄합니다.각 입력 라인마다. 말씀하신 대로 파일이 하나의 큰 줄이면 예상대로 작동해야 합니다.

답변3

dd status=none bs=1 count=50 if=${filename}

그러면 처음 50바이트가 반환됩니다.

답변4

grep -om1 "^.\{50\}" ${filename}

기타 변형(파일의 첫 번째 줄)

(IFS= read -r line <${filename}; echo ${line:0:50})

관련 정보