출력 파일을 생성하기 전에 sed -E를 사용하여 문자열을 현재 날짜 및 시간으로 바꿉니다.

출력 파일을 생성하기 전에 sed -E를 사용하여 문자열을 현재 날짜 및 시간으로 바꿉니다.

평균 CPU 사용량 로그를 저장하기 위해 파일을 생성하려고 합니다.

sudo mpstat 1 5 | grep Average | sed -E 's|Average:|$(date)|g' > cpu_usage_test.txt

"평균:" 텍스트를 현재 날짜 및 시간으로 바꾸려고 합니다. 다른 접근 방식을 시도했지만 출력에는 $(date)가 문자열로 표시됩니다. 쉽게 테스트하려면 다음 명령을 사용하여 터미널 자체에 표시하십시오.

sudo mpstat 1 1 | grep Average | sed -E 's|Average:|$(date)|g'

답변1

쉘은 작은따옴표로 묶인 문자열의 어떤 것도 대체하지 않습니다. 대신 큰따옴표를 사용하세요.

해당 옵션은 필요하지 않으며 다음 없이도 -E사용할 수 있습니다 .grepsudo

mpstat 1 1 | sed -n "s|Average:|$(date)|gp"

-E아니요, 여기서는 확장 정규 표현식이 사용되지 않습니다. 기본적으로 인쇄를 -n방지하고 sed" pAverage:"가 실제로 대체된 경우에만 줄을 인쇄합니다.

이것GNU sed 매뉴얼그건 그렇고, 학습에 나쁘지 않습니다.

관련 정보