一致する文字列 sed の 2 つの個別の単語を置き換えます。

一致する文字列 sed の 2 つの個別の単語を置き換えます。

次の入力文字列を考えます。

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

関連情報