特殊文字の検索と削除

特殊文字の検索と削除

私のDDLファイルには次の文字列がありますが、最後の)文字を削除したいと思います。

DDLには)この文字がいくつかありますが、以下に指摘した部分だけを削除したいと思います。

..
`event_sts` string,
  `rsn_code` string)
ROW FORMAT DELIMITED
  FIELDS TERMINATED BY '|'
ESCAPED BY '\\\\')                     <----- here
STORED AS INPUTFORMAT
  'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'

sedを試してみましたが、何とか動作しません。

注:同じ要件を持つDDLが多いため、「(」の発生は静的ではありません。

ベストアンサー1

これにより、以下を)含む行からすべての内容が削除されますESCAPED

sed '/ESCAPED/s/)//g' filename

現在の場所でファイルを変更するには:

sed -i.bak '/ESCAPED/s/)//g' filename

どのように動作しますか?

  • /ESCAPED/

    を含む行のみが選択されますESCAPED

  • s/)//g

    選択した行の場合はすべて削除されます)

    substututeコマンドは通常、s/old/new/正規表現を見つけてold置き換えるようですnew。私たちの場合、oldis)newisは空の文字列です。したがって)、削除されました。gコマンドの終わりに、sedは)最初と同様に行が表示されるたびにこれを実行するように指示します。

おすすめ記事