쉼표로 구분된 열 범위를 인쇄하고 나머지는 쉼표로 구분되지 않습니다.

쉼표로 구분된 열 범위를 인쇄하고 나머지는 쉼표로 구분되지 않습니다.

나는 이 문제를 해결하려고 노력하고 있습니다.

awk '{print $1","$10","$11","$12","$13,$14,$15,$16,$17,$18,$19}' <<< "$PASTE_1" > test.csv

$1 $10 $11 $12를 쉼표로 구분하여 인쇄한 다음 해당 줄까지 쉼표를 구분하지 않고 $13을 계속 인쇄해야 합니다. 13달러부터 시작하는 공백이 많기 때문이죠.

답변1

너가 말하는게 이거니:

awk '{a = ""; for (i = 13 ; i <= NF ; i++) a = a $i; 
       print $1 "," $10 "," $11 "," $12 "," a}'

입력하다

a b c d e f g h i j k l m n o p q r s t u v w x y z

다음을 제공합니다:

a,j,k,l,mnopqrstuvwxyz

즉, 13부터 시작하는 필드가 서로 연결되어 1, 10, 11, 12 뒤에 인쇄됩니다.

답변2

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

awk -v OFS=, '{print $1, $10, $11, $12, ($13 $14 $15 $16 $17 $18 $19) }'

답변3

perl -lane 'print join(",", @F[0,9..11], q//), @F[12..$#F]'

설명하다

  1. 배열은 @F필드를 연속적으로 보유합니다. @F 배열의 요소를 @F[...]참조합니다 . slice음, @F[0,9..11]@F의 첫 번째, 10~12번째 요소로 구성된 슬라이스입니다. 그런 다음 join이들을 결합하고 슬라이스 뒤에 빈 빈 요소를 추가하여 comma마지막 요소를 저장하여 또 다른 요소를 생성합니다. 요소의 idx는 13번째 요소를 수집합니다. 배열의 마지막 요소까지의 요소입니다. (배열 인덱싱은 0부터 시작합니다.)q//,sliceslice @F[12..$#F]@F$#FPerl
  2. 이제 다양한 매개변수가 print=(기본값은 null)와 연결됩니다.OFS$,

관련 정보