sed 스크립트는 열을 15자로 제한합니다.

sed 스크립트는 열을 15자로 제한합니다.

내 정규식 foo로 이 문제를 해결하려고 노력했지만 잘 되지 않았습니다.

파일 형식을 지정하려면 sed 스크립트가 필요합니다.

844388240 920009 XXXXXXXXXX YYYYYYYYYYYYYYYYYYYYYYY
800450220 910003 AAAAAAAAAAAAAAAAAA BBBBB
736458376 947883 HHHH GGGGG
800450220 910003 AAAAAAAAAAAAAAAAAA YYYYYYYYYYYYYYYYYYYYYYY

9자리(공백) 6자리(공백) 최대 15자(공백) 최대 15자

다음으로 이어진다:

844388240 920009 XXXXXXXXXX YYYYYYYYYYYYYYY
800450220 910003 AAAAAAAAAAAAAAA BBBBB
736458376 947883 HHHH GGGGG
800450220 910003 AAAAAAAAAAAAAAA YYYYYYYYYYYYYYY

세 번째와 네 번째 열은 모두 15자로 잘리지만 더 짧은 값은 영향을 받지 않고 전달됩니다.

답변1

한 가지 방법은 다음과 같습니다 sed.

sed 's/\([^ ]\{15\}\)[^ ]*/\1/g'

똑같은 것 perl:

perl -lpe 's/\S{15}\K\S*//g'

그리고 awk:

awk '{ for(i=1; i<=NF; i++) $i=substr($i, 0, 15)} 1'

그리고 vim:

:%s/\v\S{15}\zs\S*//g

그리고 cut:

tr ' ' '\n' <file.txt | cut -b1-15 | paste -d ' ' - - - -

답변2

sed -r '
s/ /\n/g;
s/^(.{,15}).*$/\1/M3; 
s/^(.{,15}).*$/\1/M4; 
s/\n/ /g
' file

관련 정보