私の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
。私たちの場合、old
is)
とnew
isは空の文字列です。したがって)
、削除されました。g
コマンドの終わりに、sedは)
最初と同様に行が表示されるたびにこれを実行するように指示します。