지정된 수의 문자를 읽는 Linux 명령 (예 : cat)
cat파일에서 지정된 양의 문자를 반환 할 수있는 Linux 와 같은 명령이 있습니까?
예를 들어 다음과 같은 텍스트 파일이 있습니다.
Hello world
this is the second line
this is the third line
그리고 저는 "hello"가 될 처음 5 개의 문자를 반환하는 것을 원합니다.
감사
head 너무 작동합니다.
head -c 100 file # returns the first 100 bytes in the file
.. 처음 100 바이트를 추출하여 반환합니다.
head이를 위해 사용 하는 것이 좋은 점은 tail일치 구문이 있다는 것입니다 .
tail -c 100 file # returns the last 100 bytes in the file
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
헤드 :
이름
head-파일의 첫 부분 출력
개요
헤드 [ 옵션 ] ... [ 파일 ] ...
기술
각 FILE의 처음 10 줄을 표준 출력으로 인쇄합니다. 둘 이상의 FILE을 사용하는 경우 각 파일 앞에 파일 이름을 제공하는 헤더를 붙입니다. FILE이 없거나 FILE이-인 경우 표준 입력을 읽습니다.
긴 옵션에 대한 필수 인수는 짧은 옵션에도 필수입니다.
-c , --bytes = [-] N 각 파일의 처음 N 바이트를 인쇄합니다. 선행 '-'를 사용하여 각 파일의 마지막 N 바이트를 제외하고 모두 인쇄합니다.
머리 또는 꼬리도 할 수 있습니다.
머리 -c X
파일의 처음 X 바이트 (UTF-16 파일 인 경우 문자 일 필요는 없음)를 인쇄합니다. tail은 마지막 X 바이트를 제외하고 동일한 작업을 수행합니다.
이것은 (및 절단) 휴대 가능합니다.
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 ~ 8을 제공합니다.
참고 : tail -1헤드에 표시되는 마지막 줄을 선택하는 데 사용됩니다.
라인을 grep 한 다음 예를 들어 다음과 같이자를 수도 있습니다.
grep '텍스트'파일 이름 | 컷 -c 1-5
나는 6 년 전 질문에 대한 대답이라는 것을 알고 있습니다.
그러나 나는 몇 시간 동안 비슷한 것을 찾고 있었는데 , cut -c 가 정확히 그것을 수행하고 오프셋을 지정할 수도있는 추가 보너스를 제공한다는 것을 알게되었습니다.
cut -c 1-5 는 Hello 를 반환 하고 cut -c 7-11 은 world 를 반환 합니다 . 다른 명령이 필요하지 않습니다.
몇 년 전에 답변 / 수락되었지만 현재 허용 된 답변은 iso-8859-1과 같은 문자 당 1 바이트 인코딩 또는 라틴 문자와 같은 가변 바이트 문자 집합의 단일 바이트 하위 집합에 대해서만 정확합니다. UTF-8 내). 대신 멀티 바이트 스플 라이스를 사용하더라도 UTF-16과 같은 고정 멀티 바이트 인코딩에서만 작동합니다. 지금은 UTF-8 보편적 인 표준 인, 그리고 볼 때 그것의 방법에 잘 감안할 때 원어민의 수에 의해 언어의 목록 과 상위 30 언어 기본 / 보조 사용하여이 목록 ,을 지적하는 것이 중요하다 단순 변수 바이트 (바이트 기반 생략) 친화적 문자 기술 사용 cut -c및 tr/ sed문자 클래스들.
Compare the following which doubly fails due to two common Latin-centric mistakes/presumptions regarding the bytes vs. characters issue (one is head vs. cut, the other is [a-z][A-Z] vs. [: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]]
to this (note: this worked fine on FreeBSD, but both cut & tr on GNU/Linux still mangled Greek in UTF-8 for me though):
$ printf 'Πού μπορώ να μάθω σανσκριτικά;\n' | \
$ cut -c 1 | \
$ tr '[:upper:]' '[:lower:]'
π
Another more recent answer had already proposed "cut", but only because of the side issue that it can be used to specify arbitrary offsets, not because of the directly relevant character vs. bytes issue.
If your cut doesn't handle -c with variable-byte encodings correctly, for "the first X characters" (replace X with your number) you could try:
sed -E -e '1 s/^(.{X}).*$/\1/' -e q- which is limited to the first line thoughhead -n 1 | grep -E -o '^.{X}'- which is limited to the first line and chains two commands thoughdd- which has already been suggested in other answers, but is really cumbersome- A complicated
sedscript with sliding window buffer to handle characters spread over multiple lines, but that is probably more cumbersome/fragile than just using something likedd
If your tr doesn't handle character-classes with variable-byte encodings correctly you could try:
sed -E -e 's/[[:upper:]]/\L&/g(GNU-specific)
Here's a simple script that wraps up using the dd approach mentioned here:
extract_chars.sh
#!/usr/bin/env bash
function show_help()
{
IT="
extracts characters X to Y from stdin or FILE
usage: X Y {FILE}
e.g.
2 10 /tmp/it => extract chars 2-10 from /tmp/it
EOF
"
echo "$IT"
exit
}
if [ "$1" == "help" ]
then
show_help
fi
if [ -z "$1" ]
then
show_help
fi
FROM=$1
TO=$2
COUNT=`expr $TO - $FROM + 1`
if [ -z "$3" ]
then
dd skip=$FROM count=$COUNT bs=1 2>/dev/null
else
dd skip=$FROM count=$COUNT bs=1 if=$3 2>/dev/null
fi
'Programing' 카테고리의 다른 글
| python pandas : 인수가있는 함수를 계열에 적용 (0) | 2020.08.07 |
|---|---|
| npm 설치 오류 (오류 : ENOENT, chmod) (0) | 2020.08.07 |
| 인라인 함수와 전 처리기 매크로 (0) | 2020.08.07 |
| jQuery text () 및 개행 (0) | 2020.08.07 |
| 부모 이벤트에서 자식 구성 요소의 함수를 호출하는 방법 (0) | 2020.08.07 |