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

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

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

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

Q&A

解決済

3回答

1087閲覧

sedコマンドについて

退会済みユーザー

退会済みユーザー

総合スコア0

Linux

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

0グッド

1クリップ

投稿2018/12/22 08:00

sampletxtの内容が下記のようになっています。

My name is Mike, How are you ? I'm fine!!

①下記コマンドを実行すると、MikeがTomに置換されて標準出力されます。

sed -e "s/Mike/Tom/" sampletxt

②下記コマンドも①と同じ動作なのでしょうか? 同じ動作/結果になるのであれば、< saampletxtなんて紛らわしい書き方する必要ないですよね?①と何が違ってくるのでしょうか?

sed -e "s/Mike/Tom/" < sampletxt

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

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

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

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

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

guest

回答3

0

ベストアンサー

この件については、①と②は同じ結果になりますね。好きな方で指定すればよいでしょう。

では、なぜ同じ結果を得るのに2種類の方法があるがですが…

①はsedの基本機能ですね。ファイル名を指定すると、そこからデータを読み込みます。
②は、sedそのものにこの機能があるわけではなく、sedは「ファイル名は指定されていない」という形で呼び出されます。この場合、sedは「標準入力」からデータを読み込みます。標準入力は、デフォルトではキーボードから入力しますが、呼び出し時に < sampletxt などとリダイレクトが指定されていると、指定したファイル(sampletxt)から読み込みます。この処理を解釈しているのは sed ではなくシェル(bashなど)です。
なので、sed 自体が < sampletxt という形式をサポートしているわけではなく、sed と シェルの組み合わせでこの指定ができることになります。

投稿2018/12/22 08:25

ockeghem

総合スコア11701

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

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

matsuand

2018/12/22 08:43

ockeghem 様、分かっている者であれば「この処理を解釈しているのは sed ではなく」の段、正しく解釈できるのですが、この処理とはどれを指しているのか、若干誤解を招くようにも感じます。sed 側に標準入力を受け入れる処理機能が存在しますので、リダイレクト処理部分は、シェルとsed で "半々" で処理実現していることを、ご指摘させていただきます。正しいですよね?
ockeghem

2018/12/22 08:47

ご指摘ありがとうございます。書きながら、「ちょっと難しいかな」と思いながらそのままにしてしまいました。そのとおりです。
matsuand

2018/12/22 08:51

ご返信ありがとうございました。
guest

0

②下記コマンドも①と同じ動作なのでしょうか? 同じ動作/結果になるのであれば、< saampletxtなんて紛らわしい書き方する必要ないですよね?

sedに関してはそうですが、プログラムによってはファイルを直接開くことができず、標準入力からしかデータを受け付けない場合がありますので、< sampletxtというようなリダイレクトが必要となることがあります。

投稿2018/12/22 08:02

maisumakun

総合スコア145201

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

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

0

個々のコマンドにて様々かと思いますが、sed はファイル入力と標準入力の2方法での入力を可能としています。入力ファイルの指定がなければ標準入力になります。

2 は、入力ファイル指定を行わないことによって、標準入力からの入力を行っており、かつリダイレクトによって標準入力するファイルを指定している、ということになります。

"<" を書くことが「字数」の面で無駄になっているように見えますが、利用している機能に若干ながら差異がある、ということかと思います。実用的には "<" が無い方を用いるので良いと思います。

投稿2018/12/22 08:28

matsuand

総合スコア186

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問