TXT 파일을 분석하고 싶지만 데이터가 1열 배열이고 다중 열 배열이어야 합니다.

TXT 파일을 분석하고 싶지만 데이터가 1열 배열이고 다중 열 배열이어야 합니다.

데이터를 수동으로 검사하지 않고도 데이터를 조작할 수 있는 방법(예: 다중 열 배열의 일부 기능을 변경해야 하는 것처럼 보이도록 변경)이 있습니까? 그 안에는 수천 줄이 있습니다.

처음 10개 행의 이미지입니다.

동일한 문제가 있는 다른 파일의 이미지를 추가했습니다. 커서는 B열에 있고 모든 정보는 A열에 있습니다. 제가 사용할 수 있었던 첫 번째 것은 재처리된 파일을 업로드해 주었기 때문인데 이 파일에는 그런 여유가 없습니다. 한 댓글 작성자는 여러 답변을 제안했으며 각 답변을 살펴보겠습니다.

여기에 이미지 설명을 입력하세요.

이 파일의 CSV 형식 이미지를 추가했습니다.

답변1

저는 3가지 솔루션을 보았습니다(첫 번째는 강력하고, 두 번째는 간단하고, 세 번째는 빠릅니다).

  1. 아파치 드릴 비트. 그것은 할 수 있다TSV 구문 분석그리고 다른 많은 형식. 그러나 이 문제가 거의 발생하지 않으면 너무 무거울 수 있습니다.

  2. Python 또는 Perl oneliner를 사용하여 줄을 분할하고 다시 처리합니다. 예:

$ ps ax | head
   PID TTY      STAT   TIME COMMAND
     1 ?        Ss     2:40 /sbin/init
     2 ?        S      0:08 [kthreadd]
     3 ?        S      0:00 [ksoftirqd/0]
     5 ?        S<     0:00 [kworker/0:0H]
     8 ?        S     13:32 [rcu_sched]
     9 ?        S      0:00 [rcu_bh]
    10 ?        S      0:07 [migration/0]
    11 ?        S<     0:00 [lru-add-drain]
    12 ?        S      0:18 [watchdog/0]
$ ps ax | head |perl -n -e 'sub mynormalize($){ $r = shift;$r->[4]=substr($r->[4], 0, 2); return $r}; my @row = split; print(join("\t", @{ normalize(\@row) }), "\n"); '
PID     TTY     STAT    TIME    CO
1       ?       Ss      2:40    /s
2       ?       S       0:08    [k
3       ?       S       0:00    [k
5       ?       S<      0:00    [k
8       ?       S       13:32   [r
9       ?       S       0:00    [r
10      ?       S       0:07    [m
11      ?       S<      0:00    [l
12      ?       S       0:18    [w
  1. vim+regex 또는 sed를 사용하세요. #2와 동일하지만 변환이 더 쉽습니다.

관련 정보