• ベストアンサー

コマンドのうまい実行の仕方

こんばんは。 下記を ・中間ファイルを作らない ・1ステートメントで やる方法はあるでしょうか? パイプや``を活用してできそうな気もするのですが、イマイチわかりませんでした。 よろしくお願いします。 head hogehoge.txt > head.txt  テキストの先頭部分を取る tail hogehoge.txt > tail.txt  テキストの最終部分を取る cat head.txt tail.txt > headtail.txt

質問者が選んだベストアンサー

  • ベストアンサー
  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.2

> たとえば、例のような処理をするとしたら、中間ファイルを作らずにできるか思ったのです。 多分、難しく考えすぎです。複数のコマンドの処理結果が順番に並んでいれば 良いのですね。 以下のような書き方で、期待通りですか? % ( head hogehoge.txt ; tail hogehoge.txt ) > headtail.txt とか % head hogehoge.txt > headtail.txt ; tail hogehoge.txt >> headtail.txt   ※ tail は、追加のリダイレクション

noname#27709
質問者

お礼

a-kumaさん、貴重なお時間をいただき、重ね重ねありがとうございます。 ありがとうございます! 上の方の回答が期待していたものです。 ()で囲んだ結果を1つにリダイレクトできるのですね。 シェルについてもっと勉強します。どうもありがとうございます。 (いま思いついたのですが、意図していたことは、結果が1度に標準出力に出力されていれば期待した動作をしたことになります。 よって、上の方の回答が期待していたものです。)

その他の回答 (1)

  • a-kuma
  • ベストアンサー率50% (1122/2211)
回答No.1

No.419722 の質問と逆(ヘッダとフッタだけを取り出したい)をしたい? No.419722 の No.3 の回答でできますが、二回ファイルをなめるので、大きなファイルがたくさんあると 遅くなります。 私なら、こうする。 % (echo '1,3p' ; echo '$-5,$p') | ex -s hogehoge.txt   先頭3行と末尾5行を抜き出す

noname#27709
質問者

補足

いつも大変ありがとうございます! head hogehoge.txt > head.txt  テキストの先頭部分を取る tail hogehoge.txt > tail.txt  テキストの最終部分を取る cat head.txt tail.txt > headtail.txt すみません。やりたいことは、「例の処理自体」ではなく、 たとえば、例のような処理をするとしたら、中間ファイルを作らずにできるか思ったのです。 イメージとしては、下のようなイメージでできるかと思ったのですが、意図(ヘッダとフッタのファイル)したようにいきませんでした。 cat `head hogehoge.txt` `tail hogehoge.txt`> headtail.txtや echo `head hogehoge.txt` `tail hogehoge.txt`> headtail.txt 何か方法がありましたら、教えていただければ幸いです。

関連するQ&A