아래와 같이 탭으로 구분된 숫자 데이터 파일이 있습니다.
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]