- ベストアンサー
コマンドのうまい実行の仕方
こんばんは。 下記を ・中間ファイルを作らない ・1ステートメントで やる方法はあるでしょうか? パイプや``を活用してできそうな気もするのですが、イマイチわかりませんでした。 よろしくお願いします。 head hogehoge.txt > head.txt テキストの先頭部分を取る tail hogehoge.txt > tail.txt テキストの最終部分を取る cat head.txt tail.txt > headtail.txt
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> たとえば、例のような処理をするとしたら、中間ファイルを作らずにできるか思ったのです。 多分、難しく考えすぎです。複数のコマンドの処理結果が順番に並んでいれば 良いのですね。 以下のような書き方で、期待通りですか? % ( head hogehoge.txt ; tail hogehoge.txt ) > headtail.txt とか % head hogehoge.txt > headtail.txt ; tail hogehoge.txt >> headtail.txt ※ tail は、追加のリダイレクション
その他の回答 (1)
- a-kuma
- ベストアンサー率50% (1122/2211)
No.419722 の質問と逆(ヘッダとフッタだけを取り出したい)をしたい? No.419722 の No.3 の回答でできますが、二回ファイルをなめるので、大きなファイルがたくさんあると 遅くなります。 私なら、こうする。 % (echo '1,3p' ; echo '$-5,$p') | ex -s hogehoge.txt 先頭3行と末尾5行を抜き出す
補足
いつも大変ありがとうございます! 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 何か方法がありましたら、教えていただければ幸いです。
お礼
a-kumaさん、貴重なお時間をいただき、重ね重ねありがとうございます。 ありがとうございます! 上の方の回答が期待していたものです。 ()で囲んだ結果を1つにリダイレクトできるのですね。 シェルについてもっと勉強します。どうもありがとうございます。 (いま思いついたのですが、意図していたことは、結果が1度に標準出力に出力されていれば期待した動作をしたことになります。 よって、上の方の回答が期待していたものです。)