다음과 유사한 콘텐츠가 포함된 CSV 파일이 있습니다.
10;12;33;44;55;66;77;88
1;2;3;4;5;6;7;8
110;112;133;144;155;616;771;818
...etc
각 줄에는 숫자로 구분된 8개의 숫자가 있습니다 ;
.
1184에서 시작하여 아래로 내려가는 각 줄의 시작 부분에 새 필드를 추가해야 하므로 최종 파일은 다음과 같습니다.
1184;10;12;33;44;55;66;77;88
1183;1;2;3;4;5;6;7;8
1182;110;112;133;144;155;616;771;818
... etc
awk
macOS에서 무언가를 사용하여 이 작업을 어떻게 수행할 수 있나요 ?
답변1
awk 'BEGIN { n = 1184 } { printf("%d;%s\n", n--, $0) }' infile >outfile
n
또는 명령줄에서 설정 하려면 다음 을 수행하세요.
awk -v n=1184 '{ printf("%d;%s\n", n--, $0) }' infile >outfile
또는 print
대신 사용하십시오 printf
.
awk -v n=1184 '{ print n-- ";" $0 }' infile >outfile
또는 awk
새 필드와 행의 나머지 부분 사이에 필드 구분 기호를 삽입합니다.
awk -v n=1184 -v OFS=';' '{ print n--, $0 }' infile >outfile
또는 첫 번째 ;
구분된 필드만 수정하고 레코드를 인쇄합니다.
awk -F ';' -v n=1184 -v OFS=';' '{ $1 = n-- OFS $1; print }' infile >outfile
이렇게 하면 각 기존 행 앞에 변수에 저장된 숫자가 붙고 n
변수도 감소합니다. 해당 라인의 기존 데이터는 수정되지 않은 채 전달됩니다.
출력이 작성 outfile
되고 질문의 샘플 데이터가 제공되면 다음과 같습니다.
1184;10;12;33;44;55;66;77;88
1183;1;2;3;4;5;6;7;8
1182;110;112;133;144;155;616;771;818
두 파일 이름은 달라야 infile
합니다 outfile
. 그렇지 않으면 입력 데이터 파일이 비워지고 손실됩니다.