
이것이 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
.