SED를 사용하여 각 줄의 7번째 문자 뒤를 잘라냅니다.

SED를 사용하여 각 줄의 7번째 문자 뒤를 잘라냅니다.

텍스트의 각 줄에서 7번째 이후의 문자를 잘라내려고 합니다.

나는 처음에 이것을 시도했습니다 :

sed 's/(.{7}).*/\1/' TestText.txt 

그런데 이런 응답을 받았습니다.

sed: 1: "s/(.{7}).*/\1/": \1 not defined in the RE

그런 다음 이것을 시도했습니다.

$ sed 's/./&#/7' TestText.txt 
Ballbou#nce
Latllma#tattjsdf
dsfase,#d,
adfadfj#jen
asdfjov#moeo
$ sed -e 's/#.*//' TestText.txt 
Ballbounce
Latllmatattjsdf
dsfase,d,
adfadfjjen
asdfjovmoeo

그러나 그것이 하는 일은 delete 뿐입니다 #. 7번째 문자 이후의 모든 문자를 삭제하고 싶습니다.

답변1

sed다음과 함께 사용 -r:

sed -r 's/(.{7}).*/\1/' file

또는 대괄호를 이스케이프 처리하세요.

sed 's/\(.\{7\}\).*/\1/' file

또는 다음을 사용할 수 있습니다 grep( -E확장 정규 표현식을 활성화하고 -o일치하는 패턴만 인쇄).

grep -oE '^.{7}' file

그리고 awk:

awk '{print substr($0,1,7)}' file

물론 cut이런 종류의 작업을 위해 설계되었습니다.

cut -c1-7 file

관련 정보