行の開始文字列と終了文字列が一致する場合は、行の末尾の文字列を置き換えて、同じ行の間に一致する文字列を無視する必要があります。

行の開始文字列と終了文字列が一致する場合は、行の末尾の文字列を置き換えて、同じ行の間に一致する文字列を無視する必要があります。

次の問題を解決するにはシェルスクリプトが必要です

elecj_test: |1009676|F|269.13348200|3|348415|237.06|0.00|0.00|||SSPPPSSSPSSS|UNTESTED||

行が次から始まる場合電子テスト:そして||次に交換する必要があります。|

その間にスペースがあります。|

見つかったら、行の真ん中にあります。||交換できず、行末でのみ可能です。

ベストアンサー1

そして、パイプをフィールドセパレータとして使用します。

  • 最初のフィールドが「elecj_test:」と等しいか、最後のフィールドが空であるか、最後に2番目のフィールドが空であるかをテストします。
  • trueの場合、最後から2番目のフィールドを空白に設定します。
awk '
  BEGIN { FS = OFS = "|" }
  $1 == "elecj_test: " && $NF == "" && $(NF - 1) == "" {
    $(NF - 1) = " "
    print
  }
' file
elecj_test: |1009676|F|269.13348200|3|348415|237.06|0.00|0.00|||SSPPPSSSPSSS|UNTESTED| |

おすすめ記事