특정 지점부터 특정 문자 읽기

특정 지점부터 특정 문자 읽기

다음과 같은 파일이 있다고 가정해 보겠습니다.

foo bar foo bar foo bar foo bar something useful"foo bar foo bar"

something useful기본적으로 문자열을 개별적으로 가져오는 방법 , 자체 파일에 저장하거나 개별적으로 출력으로 표시하는 방법을 알고 싶습니다 .

something useful(33) 앞뒤에는 "항상 같은 수의 문자가 있습니다 .

답변1

이 시도:

cut -c 34- | cut -d '"' -f1

첫 번째는 cut처음 33자를 제거하고, 두 번째는 cut첫 번째 ".

답변2

이것은 grepPerl 구문을 사용하는 GNU 버전입니다.

grep -oP '.{32}\K[^"]*'

처음 32자를 파악하여 제거 \K하고 first 까지 나머지 문자를 인쇄합니다 ".

답변3

Bash 및 매개변수 확장 표현식

$ nline="${line%%\"*}" #strip everything from first " seen to the end
$ echo "${nline:32}"   #print everything from offset 32 to the end

답변4

sed를 사용하여 작업을 수행할 수 있습니다

sed -e 's/^.\{32\}//;s/".*//' filename.txt

그러면 처음 32자가 제거되고 첫 번째 문자 이후의 모든 문자가 삭제됩니다 ".

이러한 대체는 파일의 모든 줄에서 발생합니다. 특정 행에 적용하려면 다음을 사용하십시오.

sed -e 'linenumber{s/^.\{32\}//;s/".*//;}' filename.txt

linenumber임의의 숫자는 어디에 있습니까?

linenumber{          # on the linenumber-th line, do the following
 s/^.\{32\}//        #  remove the first 33 characters
 s/".*//             #  remove the first quote and everything following it
}

관련 정보