지정된 양의 문자를 읽는 Linux 명령 (cat과 같은)


Answers

dd를 사용하여 임의의 청크 덩어리를 추출 할 수 있습니다.

예를 들어,

dd skip=1234 count=5 bs=1

1235에서 1239 바이트를 입력에서 출력으로 복사하고 나머지는 버립니다.

표준 입력에서 처음 5 바이트를 가져 오려면 다음을 수행하십시오.

dd count=5 bs=1

입력 파일 이름을 지정하려면 dd에 구식 인수 구문 분석이 있으므로 다음을 수행합니다.

dd count=5 bs=1 if=filename

또한 dd가 수행 한 작업을 자세히 알려주므로이를 버리기 위해서는 다음을 수행하십시오.

dd count=5 bs=1 2>&-

또는

dd count=5 bs=1 2>/dev/null
Question

리눅스에서 cat 과 같은 명령을 사용하여 파일에서 지정된 양의 문자를 반환 할 수 있습니까?

예를 들어 다음과 같은 텍스트 파일이 있습니다.

Hello world
this is the second line
this is the third line

그리고 나는 "hello"가 될 첫 5 문자를 반환하는 것을 원합니다.

감사




head -Line_number file_name | tail -1 |cut -c Num_of_chars

이 스크립트는 특정 줄과 위치에서 정확한 문자 수를 제공합니다 (예 :

head -5 tst.txt | tail -1 |cut -c 5-8

5 행에는 문자가, 5 행에는 5 문자가 사용됩니다.

참고 : tail -1 은 머리가 표시하는 마지막 줄을 선택하는 데 사용됩니다.




비록 이것이 수년 전에 응답되었거나 받아 들여졌지만 현재 받아 들여지는 대답은 iso-8859-1과 같은 1 바이트 당 문자 인코딩이나 가변 바이트 문자 세트의 싱글 바이트 서브 세트 (라틴 문자 UTF-8 내). 대신 멀티 바이트 스플 라이스를 사용하더라도 UTF-16과 같은 고정 멀티 바이트 인코딩에서만 작동합니다. UTF-8이 이제는 보편적 인 표준이되고 있다는 것을 감안할 때 원어민 수기본 / 보조 용도별 상위 30 개 언어 목록을 기준으로이 언어 목록을 살펴볼 때 문자 - 클래스와 함께 cut -ctr / sed 를 사용하는 간단한 가변 바이트 문자 친화적 (바이트 기반이 아닌) 기술.

두 가지 공통적 인 라틴 중심의 실수 / 바이트 / 문자 문제에 관한 가정으로 인해 이중으로 실패한 다음과 비교하십시오 (하나는 headcut 이고 다른 하나는 [az][AZ][:upper:][:lower:] ) :

$ printf 'Πού μπορώ να μάθω σανσκριτικά;\n' | \
$     head -c 1 | \
$     sed -e 's/[A-Z]/[a-z]/g'
[[unreadable binary mess, or nothing if the terminal filtered it]]

(참고 : FreeBSD에서 잘 작동하지만, GNU / Linux의 cut & tr 은 여전히 ​​그리스어를 UTF-8로 mangled했다.)

$ printf 'Πού μπορώ να μάθω σανσκριτικά;\n' | \
$     cut -c 1 | \
$     tr '[:upper:]' '[:lower:]'
π

더 최근의 또 다른 대답은 이미 "컷"을 제안했으나, 직접적인 관련 문자 대 바이트 문제가 아닌 임의의 오프셋을 지정하는 데 사용할 수 있다는 부작용 때문이었습니다.

당신의 cut-c 를 가변 바이트 인코딩으로 올바르게 처리하지 않는다면, "첫 번째 X 문자"( X 를 사용자 번호로 대체하십시오)를 시도해 볼 수 있습니다 :

  • sed -E -e '1 s/^(.{X}).*$/\1/' -eq - sed -E -e '1 s/^(.{X}).*$/\1/' -eq - 첫 번째 줄로 제한됩니다.
  • head -n 1 | grep -E -o '^.{X}' head -n 1 | grep -E -o '^.{X}' - 첫 번째 줄로 제한되며 두 개의 명령을 연결합니다.
  • dd - 다른 답변에서 이미 제안되었지만 실제로 성가시다.
  • 문자를 여러 줄에 걸쳐 처리하는 슬라이딩 윈도우 버퍼가있는 복잡한 sed 스크립트이지만 dd 와 같은 것을 사용하는 것보다 더 복잡 할 수도 있습니다.

tr 가 가변 바이트 인코딩을 사용하는 문자 클래스를 올바르게 처리하지 못하면 다음을 시도해 볼 수 있습니다.

  • sed -E -e 's/[[:upper:]]/\L&/g (GNU 고유)



당신은 또한 그 라인을 grep하고 다음과 같이자를 수 있습니다 :

grep '텍스트'파일 이름 | 컷 -c 1-5




Links