구조화된 정보와 일치하는 문서

구조화된 정보와 일치하는 문서

다음 grep명령은 문자열이 포함된 파일을 반환합니다 ptrn. 이 sed명령은 stp.

grep -rl "${isufx[@]}" -e "$ptrn" -- "${fdir[@]}" |
  sed "${sta}~${stp}!d" >> $logfl

이것이 결과가 될 것이다

cat /home/flora/logs/27043-T13:09:44.893003954.log
file1.sh
file2.sh
file3.sh
file4.sh
file5.sh
file6.sh

나는 다음과 같은 결과를 얻고 싶다

cat /home/flora/logs/27043-T13:09:44.893003954.log
File: file1.sh
+ file2.sh
+ file3.sh
+ file4.sh
+ file5.sh
+ file6.sh

하지만 사람들이 그렇게 할 수는 없을 것 같아요 grep. 일부는 awk파일에 사용하는 것을 제안할 수도 있습니다 logfl.

답변1

GNU rettools(당신이 언급한 것)를 사용하세요댓글에서귀하의 또 다른 질문):

: >output

recins -f File -v "$(cat logfile)" output

그러면 이름이 지정된 파일이 생성되거나 지워지고 값이 파일의 내용인 이름이 output지정된 필드가 삽입됩니다 .Filelogfile

GNU Recfile 형식 에서 +이러한 문자는 개행 문자로 처리되므로 위 작업은 삽입됩니다.단일 값, 개행 문자가 포함되어 있습니다.

각 파일 이름을 별도의 요소로 삽입하려면 다음을 사용할 수 있습니다.

: >output

xargs -I {} recins -f File -v {} output <logfile

위 코드는 recins행당 한 번씩 호출되며 logfile각 행에 대해 별도의 키-값 쌍을 삽입합니다.

입력을 CSV 파일로 두면 이 작업을 더 효율적으로 수행할 수 있습니다.

{ echo File; cat logfile; } | csv2rec >output

echo이 명령은 여기에서 입력 데이터 앞에 CSV 헤더를 추가하는 데 사용됩니다 csv2rec.

답변2

나는 이렇게 문제를 해결했다.

 grep -rl "${isufx[@]}" -e "$ptrn" -- "${fdir[@]}" |
    sed '1s/^/File: /;1!s/^/+ /' >> $logfl

관련 정보