sedを使う - 切り捨てられた値を行の別の値に置き換えるには?

sedを使う - 切り捨てられた値を行の別の値に置き換えるには?

ログデータの例:

SVCELPTIME=19,FAILPT=9580-8582,MICROSERVICE=YES
SVCELPTIME=411,FAILPT=9210-80129210-8686,MICROSERVICE=YES
REFNO=JAJRJZ,TXNREFNO=63165718100281723,SVCELPTIME=21,FAILPT=9210-80129210-86519210-8651,CD=PT

AはFAILPT「4ビット〜4ビット」として定義されます。たとえば9580-8582。私が経験している問題は、いくつかの行から複数​​のFAILPT「」が最初の行まで切り捨てられることです。たとえば9580-85819580-85829580-8583、それぞれを別々のキーと値のペアとして扱う必要があります。

sedを使用してください:

echo FAILPT=9210-80129210-86519230-8012 | sed 's/FAILPT=//; s/.\{4\}\|.\{4\}-.\{4\}/FAILPT=&,/g; s/,$//'

これは次のようになります: FAILPT=9210-8012,FAILPT=9210-8651,FAILPT=9230-8012 < - まさに私が必要とするもの。

ただし、ログファイルを適用しようとするとすべてが中断されます。

たとえば(例行を使用):

FAILPT=SVCE,FAILPT=LPTI,FAILPT=ME=1,FAILPT=9,95,FAILPT=80-8,FAILPT=582,,FAILPT=MICR,FAILPT=OSER,FAILPT=VICE,FAILPT==YES
FAILPT=SVCE,FAILPT=LPTI,FAILPT=ME=4,FAILPT=11,9,FAILPT=210-,FAILPT=8012,FAILPT=9210-8686,FAILPT=,MIC,FAILPT=ROSE,FAILPT=RVIC,FAILPT=E=YE,S
FAILPT=REFN,FAILPT=O=JA,FAILPT=JRJZ,FAILPT=,TXN,FAILPT=REFN,FAILPT=O=63,FAILPT=1657,FAILPT=1810,FAILPT=0281,FAILPT=723,,FAILPT=SVCE,FAILPT=LPTI,FAILPT=ME=2,FAILPT=1,92,FAILPT=10-8,FAILPT=0129,FAILPT=210-,FAILPT=8651,FAILPT=9210-8651,FAILPT=,CD=,PT

FAILPT=行の残りの部分に触れることなく値を変更または追加するにはどうすればよいですか?

ベストアンサー1

私は自分の質問にコメントで答えた。 4~4個のパターンやその中にある複数のパターンだけを探すだけです。仕事を台無しにするのはOR句です。

sed '/FAILPT=*,/p; s/FAILPT=//; s/.\{4\}-.\{4\}/FAILPT=&,/g; s/,,/,/'

おすすめ記事