GNU/Linux >> Linux の 問題 >  >> Linux

Sed改行から文字を削除しますか?

いくつかの処理の後、次のような入力ファイルがあります。

file1.txt

12345|john|student
43321|jack|professor

78965|alex|lecturer

上記のファイルをさらに処理する必要があるため、行の最後にも改行が必要です。現在、以下のように達成できます。

sed 's/$/|/' file1.txt

上記のコマンドは、次のように出力されます。

12345|john|student|
43321|jack|professor|
|
78965|alex|lecturer|

ご覧のとおり、 | 空白行にも追加されます。 |を削除しようとしたとき 以下のコマンドを使用して、空白行から再度文字を入力します

sed 's/|//g' file1.txt

| 文字はどこでも削除されています。 |のみを削除するにはどうすればよいですか 空白行で?空白行も保持する必要があります。

承認された回答:

オリジナルから、 |を追加できます 空白でない行へ:

sedを使用する :

sed -e '/^$/!s/$/|/' file

perlの使用 :

perl -lpe 's/$/|/ if length' file

|を削除する場合 空白の行から(2番目のバージョン):

perl -lpe 's/|// if length == 1'

Linux
  1. Sedは改行文字を置き換えることができますか?

  2. テキストファイルから最初の数行を効率的に削除しますか?

  3. 履歴から1行を削除する方法は?

  1. 特定の文字列と次の行を含む行を削除しますか?

  2. sed を使用して二重の空行のみを削除するには?

  3. テキスト ファイルから奇数行または偶数行を削除する

  1. 行が 60 文字を超える場合に改行を挿入する方法

  2. コマンドラインからの Clonezilla

  3. ファイル名から無効な文字を削除するには?