예를 들어, 명령줄에서 이와 같은 내용을 인쇄하고 싶습니다. file.txt라는 파일이 있다고 가정해 보겠습니다.
What is life?
how are you?
hi
whatup
this is more than
awk를 사용하여 명령줄에서 인쇄하고 싶지만 문자 수가 7보다 크면 출력은 다음과 같아야 합니다.
What is
life?
how are
you?
hi
whatup
this is
more than
따라서 기본적으로 awk를 사용할 때 문자 수가 7보다 크면 출력에서 줄을 두 줄로 나눕니다.
답변1
다음 위치에서 이 작업을 수행할 수 있습니다 awk
.
$ awk '{sub(/.{8}/,"&\n"); print}' file
What is
life?
how are
you?
hi
whatup
this is
more than
실제로 작업에 가장 적합한 도구는 아닙니다. 더 간단하게 동일한 작업을 수행할 수 있습니다.
$ fold -sw 8 file
What is
life?
how are
you?
hi
whatup
this is
more
than
Perl을 사용할 수도 있습니다.
$ perl -pe 's/.{8}/$&\n/' file
What is
life?
how are
you?
hi
whatup
this is
more than
답변2
다른 답변에 제공된 것처럼 사용할 수 있지만 awk
다음을 사용할 수도 있습니다.fmt
fmt -s -w8 file
What is
life?
how are
you?
hi
whatup
this
is more
than
답변3
그리고
awk 'length < 7 { print ; next ; }
{ printf "%s\n%s\n",substr($0,0,7),substr($0,8) }' file.txt
밝혀지다
What is
life?
how are
you?
hi
whatup
this is
more than
흰색 문자 사용 건너뛰기
awk 'length < 7 { print ; next ; }
{ printf "%s\n",substr($0,0,7) ;
i=8 ; while (substr($0,i,1) == " " ) i++; printf "%s\n",substr($0,i) }'
답변4
원하는 출력을 얻으려면 다음을 수행하십시오 sed
.
$ sed -e 's/.\{7\} /&\
/' <file
What is
life?
how are
you?
hi
whatup
this is
more than
이는 입력의 8번째 문자가 항상 공백이기 때문에 작동합니다.
8번째 문자에 관계없이 7번째 문자에서 중단하려면 다음을 수행하십시오.
$ sed -e 's/./\
&/8' <file