CSV에서 100개 열마다 잘라내기

CSV에서 100개 열마다 잘라내기

아래와 같이 탭으로 구분된 숫자 데이터 파일이 있습니다.

1 2 3 4
2 4 6 8

내 실제 파일의 너비는 50000개 열이고 100번째 열(100번째, 200번째, 300번째, 400번째 열...)만 필요합니다. 이제 다른 모든 열을 제거하고 싶습니다.

어떻게 해야 하나요?

답변1

awk목적 은 다음과 같습니다 .

awk '{for(i=100;i<=NF;i+=100){printf "%s ",$i;} print ""}' file > output

또는 필드에 공백이 있을 수 있는 경우 탭을 필드 구분 기호로 지정합니다.

awk -F'\t' '{for(i=100;i<=NF;i+=100){printf "%s ",$i;} print ""}' file > output

또는 Perl을 사용할 수도 있습니다.

perl -ane 'for($i=99;$i<=$#F;$i+=100){print "$F[$i] "}' file > output

여러 파일에 대해 이 작업을 수행하려면 쉘 루프를 사용할 수 있습니다(현재 디렉터리의 모든 파일에 대해 이 루프를 실행한다고 가정).

for f in *; do
  awk '{for(i=100;i<=NF;i+=100){printf "%s ",$i;} print ""}' "$f" > "$f".new;
done

답변2

대용량 파일에 적합한지는 모르겠지만 다음과 같이 할 수 있습니다 cut.

cut -d " " -f -100 < [your file]

관련 정보