tail 명령에서 각 줄에 접미사 또는 접두사를 추가하는 방법

tail 명령에서 각 줄에 접미사 또는 접두사를 추가하는 방법

아래와 같이 tail 명령을 실행하는 파일이 있습니다.

tail -n+1 -F "./log/catalina.log"

이 파일의 각 줄에 파일 이름 자체가 될 수 있는 다른 문자열을 접미사 또는 접두사로 추가하여 파일 내용이 다음과 같도록 하고 싶습니다.

INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version:        Apache Tomcat/9.0.1
INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Sep 27 2017 17:31:52 UTC
INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number:         9.0.1.0
INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux

출력은 다음과 같아야 합니다.

Cataline.log INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version:        Apache Tomcat/9.0.1
Cataline.log INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Sep 27 2017 17:31:52 UTC
Cataline.log INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number:         9.0.1.0
Cataline.log INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux

답변1

파이프의 다른 쪽 끝에서 파일 이름을 검색하려면 다음과 같이 , -v옵션을 사용 tail하여 항상 헤더를 인쇄할 수 있습니다.

$ tail -v file
==> file <==
test1
test2

첫 번째 줄을 캡처하고 접두사를 붙일 수 있습니다.

$ tail -vf file | awk 'NR==1{f=$2;next} {print f,$0}'
file test1
file test2

위 명령의 경우 파일 이름에는 공백이 포함되어서는 안 됩니다. 이 상황을 다루는 더 나은 버전은 다음과 같습니다.

tail -vf file | awk 'NR==1{f=substr($0,5,length-8);next} {print f,$0}'

또는 사용자 정의 접두사를 사용하십시오.

tail -vf file | awk 'BEGIN{p="custom prefix"} {print p,$0}'

사용자 정의 접미사와 유사합니다.

tail -vf file | awk 'BEGIN{s="custom suffix"} {print $0,s}'

답변2

당신은 그것을 사용할 수 있습니다 awk:

tail -f "./log/catalina.log" | awk '{print "Cataline.log",$0}'

또는 sed:

tail -f "./log/catalina.log" | sed 's/^/Cataline.log /'

답변3

그리고 xargs:

$ file="./log/catalina.log"
$ tail -n+1 -F "$file" | xargs -I {} echo "$(basename $file) {}"
catalina.log INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version:        Apache Tomcat/9.0.1
catalina.log INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          Sep 27 2017 17:31:52 UTC
catalina.log INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number:         9.0.1.0
catalina.log INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Linux

관련 정보