일치하는 문자열 sed에서 두 개의 개별 단어를 바꿉니다.

일치하는 문자열 sed에서 두 개의 개별 단어를 바꿉니다.

다음 입력 문자열을 고려하십시오.

PLOG_NFET_SLVT nf=3 ng=1 nl=20n

산출

PLOG_NFET_LVT nf=3 ng=1 nl=14n

참고: 첫 번째 단어와 마지막 단어가 교체됩니다. 데이터 간에도 차이가 있습니다. 그래서 나는 일정한 패턴을 가질 수 없습니다. 다음 명령을 사용해 보았습니다.

sed -i 's/PLOG.*FET_SLVT.*nl=20n/PLOG.*FET_LVT.*nl=14n/g' file

출력은 다음과 같습니다

PLOG.*FET_LVT.*nl=14n

도움이 필요하세요?

답변1

검색 패턴에서 캡처링 그룹을 사용하고 바꾸기 패턴에 역참조( \1또는 )를 추가할 수 있습니다.\2

sed 's/PLOG_\([A-Z]\)FET_SLVT \(.*\) nl=20n/PLOG_\1FET_LVT \2 nl=14n/'

답변2

이 시도,

 sed -i 's/^PLOG_NFET_SLVT/PLOG_NFET_LVT/g;s/20n$/14n/g' file
  • 패턴을 찾아보세요시작그리고 PLOG_NFET_SLVT로 교체PLOG_NFET_LVT
  • 및 검색 패턴마치다그리고 20n로 교체14n

답변3

이 시도:

sed 's/SLVT/LVT/;s/20n/14n/'

$ echo "PLOG_NFET_SLVT nf=3 ng=1 nl=20n" | sed 's/SLVT/LVT/;s/20n/14n/'
PLOG_NFET_LVT nf=3 ng=1 nl=14n

관련 정보