나는 샘플을 가지고 있습니다 :
"this is a long title must in a doule quotes" this_is_a_solid_long_line_without_space_or_tabs
"this is a long title must in a doule quotes"
큰따옴표로 묶인 긴 줄이므로 잘라야 합니다.
this_is_a_solid_long_line_without_space_or_tabs
포함하지 않거나 잘라야 하는 긴 줄 space
입니다 tab
.
두 개의 프로젝트가 분리되어 있습니다.tab
예상 출력:
"this is a long title mus..> this_is_a_solid_long_li..>
..>
긴 줄을 나타냅니다 .
답변1
원본 파일의 열이 탭으로 구분되어 있다고 가정합니다.
$ awk -v len=20 -F '\t' 'BEGIN { OFS=FS }
{ for (i=1; i<=NF; ++i) if (length($i)>len) $i = substr($i,1,len-3) "..>" }; 1' file
"this is a long t..> this_is_a_solid_l..>
이는 각 행의 열을 반복하며 len
사용자가 제공한 변수보다 긴 열이 있으면 잘립니다. 잘림은 표시기( )를 포함한 열의 길이가 ..>
정확히 len
문자인지 확인합니다.
열이 여러 개의 공백이나 탭(최소 2개)으로 구분되어 있고 GNU를 사용하는 awk
경우 다음을 사용할 수 있습니다.
awk -v len=20 -F '[[:blank:]]{2,}' 'BEGIN { OFS="\t" }
{ for (i=1; i<=NF; ++i) if (length($i)>len) $i = substr($i,1,len-3) "..>" }; 1' file
이는 여전히 탭으로 구분된 출력을 작성합니다.