Twitterをボケーッと眺めていたところ、xargsで呼び出したコマンドにキー入力をしたいという内容があったので、どうやったらできるのか調べてみた。
通常、対象のプロセスで標準入力が開いてないとだいたいの(というか、普通の)コマンドは処理を待たずに終了してしまう。なので、なんとかしてターミナルを標準入力として渡してやればいいということになる。
1. /dev/ttyを読み込ませる
以下のように、/dev/tty
をxargsで呼び出したコマンド内部で読み込ませる事で、ターミナルの入力を渡すことができる。
先日のシェル芸勉強会において、awkで巨大な数字を取り扱うという内容があった。
awkでは、巨大な数字を扱おうとすると以下のようなエラーが出力されることがあるのだけど、これを回避する方法について考えるという内容だった。
$ echo|awk '{print(999^300)}'
+inf
Stack Overflow
とかを漁っていると、どうも53bit分までのデータしか扱えないため、それ以上の数字になるとinfとして扱われてしまっている模様。
c++ - Does big integer in AWK only have 53 bits? - Stack Overflow
...
先日行われたシェル芸勉強会の中で、別のファイルから1行ずつデータを取得させたいということがあった。
いろいろとやり方を調べたりしていたのだが、その中でくんすとさん
がいい感じの回答をしていた。
cat speech | awk 'NF==0{getline< "speech2"}{print}'#シェル芸
実行例を書いてみる。
以下の例では、「seq.txt」の空行に「aiueo.txt」というファイルの中身を差し込んでいっている。