次のような行を含むCSVファイルがあります。
PerformanceData|712899|713|12|5.53|VERIFIED_TRADE N CoverDistribution SecurityTransfer (BondUKTI / //-MO/W////.%)|5708|124.9
( )
列6では、CSVの各行から1つのブロックを削除する必要があります。かっこが現れる唯一の場所です。
その中に現れるパターンはありませんが、( )
常に含まれています( )
。
予想される出力は次のとおりです。
PerformanceData|712899|713|12|5.53|VERIFIED_TRADE N CoverDistribution SecurityTransfer|5708|124.9
私はLinuxを初めて使用します。 Linuxコマンドを入手するのに役立つ人はいますか?
ベストアンサー1
角かっこと前のスペースを削除し、角かっこの内容に改行文字が含まれていないと仮定すると、次のようになります。
$ sed 's/ ([^)]*)//' file
PerformanceData|712899|713|12|5.53|VERIFIED_TRADE N CoverDistribution SecurityTransfer|5708|124.9
この式は、 ([^)]*)
空白、、文字(
ではない文字数に関係なく、が次々と来ます。これはデータから削除されます。 1行に複数の括弧を使用するには、括弧を追加します(図を参照)。)
)
g
s/ ([^)]*)//g
角かっこの前後にスペースを許可する必要がある場合を使用してくださいs/[[:blank:]]*([^)]*)[[:blank:]]*//
。各は[[:blank:]]*
スペースまたはタブの数と一致します。