출력을 테이블에 넣기

출력을 테이블에 넣기

이것이 FAQ라는 것을 알고 있지만 이 문제에 대해 여러 페이지를 읽었지만 제대로 작동하지 않습니다. 저는 이 grep명령을 사용하여 세 개의 서로 다른 텍스트 파일에서 다양한 값을 찾습니다.

명령줄:

grep -o "201[1-4].[0-9][ -9]" file1.txt file2.txt file3.txt

산출:

file1.txt:2012.69
file1.txt:2013.44
file2.txt:2013.17
file2.txt:2012.6    
file2.txt:2013.75
file2.txt:2013.08
file3.txt:2013.54
file3.txt:2013.9    

출력에서 세 파일의 이름을 첫 번째 행(헤더)으로 갖고 각 열의 모든 값을 찾으려고 합니다. 문제는 필요한 행 수를 예측할 수 없다는 것입니다.

답변1

을 사용하여 awk각 파일의 출력을 grep한 줄로 연결한 다음 csvtool및 를 사용하여 column -nt더 나은 출력을 만들 수 있습니다(참고: 이는 -n데비안 확장이므로 사용자의 플랫폼에서는 작동하지 않을 수 있습니다).

grep -o "201[1-4].[0-9][ -9]" file1.txt file2.txt file3.txt \
| awk -F: '
  {
    if (!s[$1]){ s[$1]=$2 }
    else { s[$1]=s[$1]","$2 }
  }
  END {
    for (f in s){ print f","s[f] }
  }' \
| csvtool transpose -u " " - \
| column -nt

산출:

file1.txt  file3.txt  file2.txt
2012.69    2013.54    2013.17
2013.44    2013.9     2012.6
                      2013.75
                      2013.08

를 설치해야 할 수도 있습니다 csvtool.

관련 정보