次のCSVファイルがあります。
name_var;type_var;
id;string;
dt_depot;string;
num_artc;string
出力が次のように最初の項目を削除し、;
最後の項目を置き換えたいと思います。,
name_var type_var,
id string,
dt_depot string,
num_artc string
答え1
単にsed
次に変更してください。
$ sed 's/;$/,/; s/;/ /g' file
name_var type_var,
id string,
dt_depot string,
num_artc string
awk
ソリューションの場合、入力ファイルに2つのパディング列のみを含める必要がある場合は、次のawk
式を使用できます。
$ awk -F";" '{ if (NF==3) $2=$2","; print $1,$2 }' file
name_var type_var,
id string,
dt_depot string,
num_artc string
答え2
$ awk -F';' '{sub(/;$/,","); $1=$1} 1' file
name_var type_var,
id string,
dt_depot string,
num_artc string
スクリプトは行末のすべての文字を変更し、フィールドに;
値を割り当てて,
残りのすべての文字を変換します。これにより、すべての入力フィールド区切り記号(設定済み)が出力フィールド区切り文字(デフォルトでは空)に変わります。 。次に、基本ジョブ()を呼び出す真の条件(1)を指定して現在の行を印刷します。;
,
;
-F';'
print $0
答え3
これは次のawk
ように行われます。
awk -F\; '{print $1" "$2","}'
最後のカンマが気に入らない場合は、次のように書き直すことができます。
awk -F\; '{ if (NF != 2) print $1" "$2","; else print $1" "$2;}'
答え4
次のコマンドを使用します。
awk '{sub(/;$/,",")sub(/;/," ")}1' file
次の結果が表示されます。
name_var type_var,
id string,
dt_depot string,
num_artc string