タグ

パイプに関するakaneharaのブックマーク (5)

  • vimをパイプにする - 余白の書きなぐり

    この記事は Vim Advent Calendar 2016 (その2) の3日目の記事です。 ノーマルモード以外をパイプとして使う際の情報を追記しました (2016/12/04) UNIXのテキスト処理 UNIXでテキストを自動整形する際、パイプ機能は欠かせない。 $ cat a.txt 1 hoge 2 piyo 3 fuga $ cat a.txt |sed 's/piyo/foo/' |grep '2' 2 foo シェル上で | というパイプ記号を使ってコマンドを次々繋げることで、複雑なテキスト処理をこなすわけだ。 パイプは便利だが、テキストエディタをパイプとして使う人はあまり見かけない。 テキストエディタ=対話的 という常識があるため、パイプのような自動処理とは相性が悪いと思われているのだろう。 しかし今日はあえて、シェルスクリプトやワンライナーの中にvimを埋め込み、パイプと

    vimをパイプにする - 余白の書きなぐり
  • パイプ出力を現在のシェル上のwhileに喰わせる上手いやり方 - Qiita

    これはコマンドの標準出力を1行ずつ f という変数に読み込んで何らかの処理を行うってやつです。 whileの中でやることがファイル操作などの一般的なことならこれで全然問題ないんですが、実行中のシェル環境に対する処理(具体的には変数の設定など)を行おうとすると期待通りにいってくれなくなります。例えばこんな感じ↓ # findで見つけたファイル名をfilesという配列変数に詰め込みたい files=() find -type f | while read -r f; do files+=("$f") done echo "${files[@]}" # 確かにfilesに値を入れた筈なのに空が出力される?? これはパイプで繋げると後ろのwhileがサブシェルで実行されてしまうために起こる現象です。噛み砕いて説明すると… 現在findを実行中のbashとは別に、パイプの後ろでもう一つのbashが起

    パイプ出力を現在のシェル上のwhileに喰わせる上手いやり方 - Qiita
  • システムコールの特性を知る pipe(2)編

    これまで数回にわたって紹介してきたmmap(2)に続き、今度はpipe(2)による処理の高速化について考察していく。やりとりするデータのサイズを工夫することで、うまく効率化を図ることができる(編集部) システムコールの特性を知ろう UNIX系OSにおける基機能にパイプがある。シェルでは|で表現され、コマンドの標準出力を次のコマンドの標準入力に結びつける処理をする。 実際に使われるシステムコールはpipe(2)で、pipe(2)で生成されたファイルディスクリプタに対してwrite(2)およびread(2)でデータの読み書きを行う仕組みになっている。 これまで数回にわたって、mmap(2)を使うことで処理の高速化が実現できることを示してきたが、read(2)/write(2)を使っても、やりとりするデータのサイズを工夫することで、処理速度の改善を図ることができる。ここではOSの提供するいくつ

    システムコールの特性を知る pipe(2)編
  • perlopentut - Perl でいろんなものを開くためのチュートリアル - perldoc.jp

    Perl has two simple, built-in ways to open files: the shell way for convenience, and the C way for precision. The shell way also has 2- and 3-argument forms, which have different semantics for handling the filename. The choice is yours. Perl には、ファイルを開くための 2 つの単純な組み込みの手段があります: 利便性のためのシェル風の方法と、正確性のための C 風の方法です。 シェル風の方法には 2 引数と 3 引数があり、ファイル名の扱いに関して 異なった動作をします。 選択はあなた次第です。 シェル風に開く¶ Perl's open functio

  • パイプでつなぐ - PukiWiki

    はじめに † Amazonの協調フィルタリングで話題になった「集合知(collective intelligence)」ですが、 そこにはこれが正解というものはなく、仮説と検証のサイクルを何度も繰り返しながら新たな方式が 日々研究開発されています。 仮説と検証のサイクルでは、生のデータから分析可能なデータに加工する作業が幾度となく繰り返され その処理内容は様々です。このため、データ加工では短期間に適切なデータを作成するというハードな 業務です。 そんな時に役にたつのが、これからご紹介します UNIXのコマンドをパイプでつないで、データを加工する方法(パイプライン処理) シェルスクリプトを使って、パイプライン処理によりきめ細かな処理を追加する方法 です。 シェルには、sh, ksh, bash, csh, tcsh等いろいろな種類がありますが、ここではshを使って説明します。 *1 ↑ パイ

  • 1