Linuxのファイルから最後のカンマ区切り文字を削除する方法は?
ファイルの例:
"is_supported_kafka_ranger" : "true",
"kafka_log_dir" : "/var/log/kafka",
"kafka_pid_dir" : "/var/run/kafka",
"kafka_user" : "kafka",
"kafka_user_nofile_limit" : "128000",
"kafka_user_nproc_limit" : "65536",
予想される結果:
"is_supported_kafka_ranger" : "true",
"kafka_log_dir" : "/var/log/kafka",
"kafka_pid_dir" : "/var/run/kafka",
"kafka_user" : "kafka",
"kafka_user_nofile_limit" : "128000",
"kafka_user_nproc_limit" : "65536"
ベストアンサー1
GNUの使用sed
:
sed -i '$s/,$//' file
つまり、最後の行($
)からs
行末()のカンマ()を,$
何もないものに置き換えます。
フラグのため、変更は内部で行われます-i
。
標準sed
:
sed '$s/,$//' <file >file.new &&
mv file.new file
注:誰かが「最後の行」を「最後の行」(または同様のもの)に変更する編集を提案しました。これは間違っています。$
アドレス(編集コマンドが適用される行)を指定するために使用される場合は、ストリームまたはファイルの最後の行を表します。これはその他$
正規表現に使用されます。