ファイルの最後のテキスト行を見つけて、最後のカンマを削除したいと思います。私この質問はすでにリクエストされています。しかし、答えを受けた後、私の質問は十分に具体的ではないことに気づきました。
このsed
コマンドはファイルの最後の行に移動して操作を実行します。私の場合は、末尾のカンマを削除したいと思います。
sed -i '$ s/",/"/g' file.txt
だからこれ:
blah blah blah,
blah blah blah,
blah blah blah,
...次のようになります。
blah blah blah,
blah blah blah,
blah blah blah
しかし、テキストの最後の行の後に空白行がある場合は機能しません。ファイルから。
私はテキストの最後の行を取得する方法を探していましたが、私が理解して適用できるものが見つかりませんでした。また、すべての末尾の空白行を削除する方法を見つけ、次のコマンドを見つけました。
sed -e :a -e '/^\n*$/{$d;N;ba' -e '}' *.txt
しかし、それは私にとってはうまくいきません(コマンドラインに私のファイルの内容を出力するようです)。とにかくこれはエレガントではありません。次の空行を削除したくありません。テキストを含む最後の行を識別し、それに応じてアクションを実行する方が良いでしょう。
最後の行からカンマを削除する方法テキスト1つのディレクトリに複数のファイルがありますか?
ベストアンサー1
大容量ファイルの場合は、より速いGuruの回答を使用してください。しかし、小さなファイル(25行未満)では、これが少し速いことがわかりました(GNU tacがあると仮定)。
tac file | awk '!/^[[:blank:]]*$/{i++;if(i==1){sub(",$","")}}1' | tac