Bash: 여러 파일의 줄을 하나의 출력 파일에 추가하고 파일 이름을 열로 추가합니다.

Bash: 여러 파일의 줄을 하나의 출력 파일에 추가하고 파일 이름을 열로 추가합니다.

이것은 이전 질문에 이어집니다. Bash: 여러 파일에서 지정된 열의 가장 높은 값을 가진 행을 선택하고 가장 높은 값을 가진 행을 포함하는 출력 파일을 만듭니다.

내가 사용한 솔루션은 다음과 같습니다.

for file in mi*
do
    sort -k14,14 -n $file | tail -1
done > result

출력 파일을 만들 때 파일 이름이 포함된 열을 추가할 수 있도록 이 코드를 편집하는 쉬운 방법이 있는지, 아니면 다른 접근 방식을 사용해야 하는지 궁금합니다.

이 문제를 발견했습니다여러 파일에서 데이터를 가져오고 파일 이름을 추가하는 Bash 명령하지만 내 필요에 맞게 조정하는 방법을 모르겠습니다.

추가 정보로 업데이트: 파일은 tsv이고 열 이름이 있습니다.

답변1

for file in mi*
do
    printf "%s " $file
    sort -k14,14 -n $file | tail -1
done > result

또는

for file in mi*
do
    echo "$file $(sort -k14,14 -n $file | tail -1)"
done > result

구분 기호에 따라 파일 이름 뒤의 공백을 다른 문자로 바꿀 수 있습니다.

답변2

트릭은 stdout으로 전송된 내용을 변수에 넣은 다음 해당 변수와 파일 이름을 출력하는 것입니다.

에코에서 변수의 순서를 변경할 수 있으며 중요한 경우 구분 기호를 추가할 수도 있습니다.

예를 들어.

for file in mi*
do
    myline=$(sort -k14,14 -n $file | tail -1)
    echo "$file $myline"
done > result

찾은 답변은 search 라는 명령을 사용합니다 grep. 여러 파일을 검색하는 경우 검색 문자열이 발견된 파일 이름 앞에 선택적으로 grep을 추가할 수 있습니다.

관련 정보