문장을 얻어서 포장하는 방법을 찾고 있어요. column
내 시나리오에서는 80자로 된 여러 문장 열이 있기 때문에 그런 것을 사용하는 것은 내가 원하는 것이 아닙니다.
이를 수행할 수 있는 방법이 있습니까? 문장을 한 번만 하는 것은 문제가 되지 않는다는 점을 지적하고 싶습니다. 여러 작업을 동시에 수행합니다.
2014년 5월 15일 | 금요일 | 서버가 다운되어 중단되었습니다 | Rick이 실수로 서버를 껐습니다.
나는 그것을 구분하기 위해 |를 추가했습니다. 그러나 각각은 일정한 길이로 포장됩니다. 동시에 서로를 존중합니다.
답변1
에 대해 이야기하고 있을 수도 있습니다 fold
.
$ echo abcdefghijklmnop | fold -w 4
abcd
efgh
ijkl
mnop
From man fold
(가장 관련성이 높은 옵션만 표시하며 더 많은 옵션이 있음):
DESCRIPTION
Wrap input lines in each FILE (standard input by default), writing to
standard output.
-s, --spaces
break at spaces
-w, --width=WIDTH
use WIDTH columns instead of 80
답변2
답변3
이게 네가 말하는거야?
$ cat temp
This is Some Long Text to Test
This is Also Some Long Text to Test
Final Call: Some Text to Complete This
$ INPUTS=""
$ FOLDWIDTH=5
$ FILENAME=temp
$ cat $FILENAME
This is Some Long Text to Test
This is Also Some Long Text to Test
Final Call: Some Text to Complete This
$ for i in $(seq 1 $(awk 'END{print NR}' $FILENAME))
> do
> INPUTS="$INPUTS <(awk 'NR==$i' $FILENAME | fold -w $FOLDWIDTH)"
> done
$ bash -c "paste $INPUTS"
This This Final
is So is Al Call
me Lo so So : Som
ng Te me Lo e Tex
xt to ng Te t to
Test xt to Compl
Test ete T
his
하지만 이것은 약간 해킹적입니다. 특히 bash -c
최종 명령줄을 해석하기 위해 하위 프로세스를 시작하는 데 사용합니다. 파일을 한 줄씩 구문 분석하고 각 파일을 파일 설명자로 입력하는 다른 방법을 생각해 보았지만 paste
좋은 해결책을 얻을 수 없어 이에 의지했습니다. 또한 내 제안은 사용법이 bash -c
충분히 명확하지 않은 경우 bash 프로세스 교체를 사용하는 것입니다 .
답변4
당신은 또한 이것을 할 수 있습니다 sed
,
$ echo abcdefghijklmnop | sed 's/\(.\{4\}\)/\1\n/g'
abcd
efgh
ijkl
mnop
마지막 빈 줄을 제거하려면,
$ echo abcdefghijklmnop | sed 's/\(.\{4\}\)/\1\n/g' | sed '/^$/d'
abcd
efgh
ijkl
mnop