sedまたは他のコマンドの入力ファイルとしてのconsoleコマンドの結果


0

いくつかのコマンドは入力としてファイルを取りますが、コマンドの結果をファイルとして扱う方法はありますか?

たとえば、2つの文字列の間の文字列を取得します。

sed -n "/START-WORD-HERE/,/END-WORD-HERE/p" input

しかし、私は入力としてたくさんのテキストを生成するコマンドを使いたいです。例えば 'cat somefile' 入力を$(cat somefile)に置き換えようとしましたが、catコマンドによって返されたすべての単語に対してsedがエラーを返しました...


どちらか パイプ または プロセス代替
glenn jackman

回答:


0

はい、これがLinuxの理念「より大きなプロセスを作るための多くの小さなツール」の核心です。

Linuxはコマンドラインパイプと呼ばれるものを使用しています。

それらを使用するには、単純に縦棒文字を使用して2つのコマンドを結合します。

|

ですから、あなたの場合、catコマンドの出力をsedコマンドに送りたいと言ったとします。

cat somefile | sed -n "/START-WORD-HERE/,/END-WORD-HERE/p"

この場合、コマンドの後にファイル名を指定しないように注意してください。

すべてのLinuxコマンドの99%はパイプを使って操作することを可能にしますが、それらのうちのいくつかについてはmanページを必ず読むようにしてください。を使用する

-

(マイナス文字)

ファイル名の代わりに。

また、ほとんどの場合、パイプは線形であり、一方の端の出力がもう一方の端の入力を形成し、チェーンに沿って実行される変換をすべて保持します。

これは、例えば

cat somefile | grep someword | sed -n "/START-WORD-HERE/,/END-WORD-HERE/p"

sedへの入力は、grepがcatからの入力に対して実行した操作からの出力になります。

正しいことがわかって、一度に1つずつステップを進めていくことを恐れないようにするまで、最初にファイルのコピーをテスト/実験することをお勧めします。

得る

cat blah | grep bleah

sedビットを追加する前に、少し正しいです。それから、awk / wc /その他のビットを追加する直前にsedビットを取得してください。一度に1ステップずつ出力を見ると、パイプをデバッグして検証することができます。

非常に多くの異なる仕事をする多くのコマンドがあります、そしてそれはLinuxのコマンドラインツールマニュアルのページを通して読むことを夕方過ごすのにすばらしい言い訳です。ファイルから列を切り出したり、単語文書をテキストに変換したり、行数を数えたりするためのツールがあります。

それで、あなたがそれに飽きたら、ここに私がずっと前にPHP Builderのために書いた記事へのリンクがあります。そして、あなた自身のパイププロセッサをPHPで書く方法をあなたに示します。

http://www.phpbuilder.com/columns/peter_shaw20090211.php3

何よりも楽しいのは、非常に少数のツールを使って素晴らしいことをいくつかできることです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.