質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
sed

sedとは、POSIX環境のために作られたコマンドラインエディタです。sedは編集スクリプトの指示のもとに複数のファイルを編集し、標準出力にその結果を出力します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

csh

cshは、C言語スタイルの構文を持つUNIX系OSのシェルの1つのことです。

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

Q&A

解決済

4回答

22900閲覧

sed コマンドで改行を部分的に置換したい

ahill

総合スコア17

sed

sedとは、POSIX環境のために作られたコマンドラインエディタです。sedは編集スクリプトの指示のもとに複数のファイルを編集し、標準出力にその結果を出力します。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

csh

cshは、C言語スタイルの構文を持つUNIX系OSのシェルの1つのことです。

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

1グッド

1クリップ

投稿2015/08/10 06:53

初心者の初書き込みで失礼します.

テキストファイル「document.txt」

aaa
100
1 2 3 4 5

を,Linuxのシェル(b, c, bash, tcsh等)で,

aaa 100
1 2 3 4 5

としたいと考えています.

そこで,sedコマンド
sed 's/aaa\n/aaa/g' document.txt
で"aaa"行の改行を部分的に消すよう置換したのですが,
できませんでした.(vim内でのsedは置換可能でした)

シェルで部分的な行での改行の消去を教えて頂けないでしょうか?

DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

普通に sed で s すると行ごとに処理されるので改行は置換できないと思います。

次のように N で次の行の読み込みをして s で改行を除去するとうまくいきます。

sed '/aaa/N;s/\n/ /' document.txt

上書きするなら -i で。

sed -i '/aaa/N;s/\n/ /' document.txt

投稿2015/08/10 07:13

編集2015/08/10 07:14
ngyuki

総合スコア4516

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ahill

2015/08/10 07:19

バッチリ解決できました! 本当にありがとうございました.
guest

0

sed は行指向の処理をするので、行をまたがった処理(改行を扱う処理)は面倒です。

bash

1sed '/aaa/{N;s/\n/ /}'

投稿2015/08/10 07:26

otn

総合スコア85762

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ahill

2015/08/10 07:38

回答有難うございました. 僅差で先に同様の回答がありましたが,有益なご指南,感謝いたします.
guest

0

sed で元ファイルを直に修正したいなら、 -iオプション(macなら-i'')を付けてみてください。

投稿2015/08/10 07:11

pi-chan

総合スコア5936

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ahill

2015/08/10 07:16

表題の”置換”という表現に語弊がありましたが,書き換えに関してのトラブルではありませんでした.
guest

0

sedコマンドは元のファイルを書き換えたりはしませんよ。

sh

1sed 's/aaa\n/aaa/g' document.txt > converted.txt

こうしてください。

投稿2015/08/10 06:57

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/08/10 07:05

もし改行の置き換えトラブルだったら、ここ(http://unicus.jp/skmk/archives/315)も読んでみてください。 なんか参考になるかも。
ahill

2015/08/10 07:41

>Kosuke_Shibuyaさん 早速の回答有難うございます. 私の質問の仕方が悪かったのですが,標準出力に関してのトラブルではありませんでした. >pikovoltさん trは普段使わないのですが,この機会に勉強したいと思います.
退会済みユーザー

退会済みユーザー

2015/08/10 07:55

単に N コマンドの使い方に触れていたので、ここ読めばわかるかな。と思ったんですが、言葉足らずで失礼いたしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問