パイプコマンド、stdin修正、stdoutへの書き込み

パイプコマンド、stdin修正、stdoutへの書き込み
echo Hello World | nano - | less

テキストエディタでHello - > Goodbyeを修正したいと思います。

Nanoで使用する必要はありません。 Nanoがstdinを読み込んでいますが、ファイルに書き込むように要求しています(書き込み - -というファイルを生成)。

答え1

これその他のユーティリティvipeマンページにはpackageという素晴らしいコマンドがあります。

SYNOPSIS
       command1 | vipe | command2

DESCRIPTION
       vipe allows you to run your editor in the middle of a unix pipeline and
       edit the data that is being piped between programs. Your editor will have
       the full data being piped from command1 loaded into it, and when you close
       it, that data will be piped into command2.

デフォルトでは、このコマンドはeditor通常、デフォルトのコマンドラインエディタへのシンボリックリンクであるコマンドを使用します。リンクを変更する(update-alternativesDebianベースのシステムの場合)、またはEDITOR環境変数を使用してこの設定を変更できます。たとえば、次のようにできます。

echo Hello World | EDITOR=nano vipe | less

それ以外の場合、特定のテキストエディタがそのような機能をサポートしていない場合は、手動で一時ファイルを作成し、そこにファイルを書き込み、エディタを実行し、残りのパイプラインにファイルを供給してから一時ファイルを削除します。このvipeコマンドはデフォルトですべてを処理します。大丈夫ですが、基本的にコマンドはほとんど使用できません。

答え2

「Hello」を「Goodbye」(または他の単語の置換)に置き換えるには、エディタで手動で編集せずに自動検索および置換ツールを使用できます。たとえば、「sed」は次のように置き換えることができます。

echo Hello World | sed 's/Hello/Goodbye/' | less

詳しくは「man sed」をご覧ください。

答え3

テキストエディタのグループ(別名ジョーの編集者)したいとおりにしてください。

コマンドはecho "hello world" | joe - | less期待どおりに実行されますが、何らかの理由で引用符が必要です。

gpg などの一部のコマンドは、パイプに入らない表示出力を生成します。これにより、joe内部の初期表示が破壊されますが、制御キー+アル字型--refresh-- すべての内容をクリーンアップします。

関連情報