awkコマンドを使用したパイプの検索と置換

awkコマンドを使用したパイプの検索と置換

テキストの途中でパイプ()を削除する必要があるため、パイプで区切られた()データ|で列7をgrepしようとしています。|

サンプルファイル:

col1|col2|col3|col4|col5|col6|col7|col8|col9|col10
value1|value2|value3|value4|value5|value6|"value7|text"|value8|value9|value10

|列7に関する質問:テキストの途中から削除する必要があります。value7|text

列7の出力は次のとおりです。value7 text

|ここで、プロセスが機能するように単一の文字列として処理できるように、()パイプを空白に置き換えて、列7に移動するawkコマンドを作成しようとしています。

最終出力は次のようになります。

col1|col2|col3|col4|col5|col6|col7|col8|col9|col10
value1|value2|value3|value4|value5|value6|"value7 text"|value8|value9|value10

提案してください。

ありがとう、

ベストアンサー1

データは正しい形式のCSVデータとして表示されるため、CSVパーサーを使用できます。

$ csvformat -d '|' file | tr '|' ' ' | csvformat -D '|'
col1|col2|col3|col4|col5|col6|col7|col8|col9|col10
value1|value2|value3|value4|value5|value6|value7 text|value8|value9|value10

これはcsvformat以下で使用されます。csvkit|- 区切りデータをコンマ区切りデータで再フォーマットします。tr次に、残りのパイプ記号を空白に置き換えます。最後に、csvformatカンマ区切りのデータを|--separated 形式に再フォーマットするために再利用されます。

二重引用符は、csvformat必要なときやifを使用するときにのみフィールドに追加されます(この場合、すべてのフィールドに二重引用符が追加されます)。-U 1

おすすめ記事