列の終わりがまだ存在しない場合は、文字で置き換える必要があります。

列の終わりがまだ存在しない場合は、文字で置き換える必要があります。

使用しようとしているときにawk機能する他のものを使用できます。

次の行を含むファイルがあるとします。

ewhueh wnlknlweknlnw/ qwejmdpdhhd 47578
enhkine enoekjohnkjiof elkjehbjuwekjuk 88989
ehnjkine efjlwkjflkjw/ ie3hjfihie 73746
ehneihe efhehjlkijehfl ekljekfjl 8438477

しかし、すべての行がこのようにスラッシュで終わりたいと思います。

ewhueh wnlknlweknlnw/ qwejmdpdhhd 47578
enhkine enoekjohnkjiof/ elkjehbjuwekjuk 88989
ehnjkine efjlwkjflkjw/ ie3hjfihie 73746
ehneihe efhehjlkijehfl/ ekljekfjl 8438477

どうすればいいですか?

私はこれを試しましたが、悪い結果を得ました

awk '{sub(/.$/, "/", $2)} 1'

しかし、これを得ました。

ewhueh wnlknlweknlnw/ qwejmdpdhhd 47578
enhkine enoekjohnkjio/ elkjehbjuwekjuk 88989
ehnjkine efjlwkjflkjw/ ie3hjfihie 73746
ehneihe efhehjlkijehf/ ekljekfjl 8438477

私が望んでいない前の行の最後の文字を削除します。

では、どうすればこのような結果が得られますか?

ewhueh wnlknlweknlnw/ qwejmdpdhhd 47578
enhkine enoekjohnkjiof/ elkjehbjuwekjuk 88989
ehnjkine efjlwkjflkjw/ ie3hjfihie 73746
ehneihe efhehjlkijehfl/ ekljekfjl 8438477

答え1

awkを使用してください:

awk '$2 !~ /\/$/ {$2 = $2 "/"}; 1' file

答え2

単純な。問題のファイル名がfoo.txtであると仮定すると、sed次のように目的の結果が得られます。

sed 's/$/\//' foo.txt > aux && mv aux foo.txt

関連情報