行の最後の文字を切り捨てる

行の最後の文字を切り捨てる

csv異なる長さの行を持つファイルがあります。しかし、すべて一対の中かっこで囲まれた数字で終わります。例えば、

........{5}
........{16}

たとえば、数字と中括弧を削除したり、二重引用符で置き換えたいとします。結果は次のとおりです。

........
........

または

........"
........"

固定長があるか、行の末尾に同じ文字列がある行の解決策のみが見つかりました。

どんなアイデアがありますか?

答え1

削除するにはGNUを使用してくださいsed

sed 's/{[0-9]\+}$//' file.csv

標準同等:

sed 's/{[0-9]\{1,\}}$//' file.csv

または:

sed 's/{[0-9][0-9]*}$//' file.csv

削除の代わりに交換するには、//次のように交換してください。/"/"

答え2

{..}このGNU sedコマンドを使用して、最後のコマンドを二重引用符で置き換えます。

sed -r 's/^(.*)\{.*\}$/\1"/g' file

例:

$ cat file
........{5}
........{16}
avhjjk{23}

$ sed -r 's/^(.*)\{.*\}$/\1"/g' file
........"
........"
avhjjk"

通過しawk

$ awk '{gsub (/{.*}$/,"\""); print}' file
........"
........"
avhjjk"

関連情報