1. ホーム
  2. sed

[解決済み] sedで改行をスペースに置き換えるには?

2022-03-16 14:19:47

質問

改行(".)を置き換えるにはどうしたらいいですか? \n ")からスペース(" を使用しています。 sed コマンドを使用しますか?

試行錯誤の結果、失敗しました。

sed 's#\n# #g' file
sed 's#^$# #g' file

どうすれば直るの?

どのように解決するのですか?

この解決策をGNUで使用する sed :

sed ':a;N;$!ba;s/\n/ /g' file

これは、ファイル全体をループで読み込みます( ':a;N;$!ba ) の後、改行をスペースに置き換えます ( s/\n/ /g ). 必要であれば、さらに置換を追加することもできる。

説明する。

  1. sed は、改行を除いた最初の行をパターンスペースに読み込んで開始します。
  2. でラベルを作成します。 :a .
  3. によって、改行と次の行をパターンスペースに追加する。 N .
  4. 最終行より前にいる場合は、作成したラベルに分岐する $!ba ( $! は、最終行で行わないという意味です。を実行しないようにするために必要です。 N これ以上入力がない場合、スクリプトを終了してしまいます!)。
  5. 最後に、置換はパターンスペース(ファイル全体)上ですべての改行をスペースに置き換えます。

以下は、BSDとOS Xで動作するクロスプラットフォーム互換の構文です。 sed (のように 弁慶コメント ):

sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/ /g' file

ご覧のように sed この単純な問題に対して よりシンプルで適切な解決策としては この回答 .