「AWK」を含む日記 RSS

はてなキーワード: AWKとは

2019-10-11

anond:20191009224327

別にawkで間に合うならawkを使えばいいじゃん。

俺様が読める言語で書けって?

2019-10-09

シェル芸法律で禁じて欲しい

パイプでつないでawk使ってハッカー気分かもしれないけどお前の書いてるスクリプトクソクソクソオブクソだから

おとなしく

Python

subprocess

使え!!!!!!!!!!!!!!


追記

本物のハッカーである皆さんはどしどし使ってくれて大丈夫ですよ^^;

lispmemo シェル芸シェルスクリプトは異なる概念では?

そうですね、熱くなって言い過ぎました。

個人ターミナルに打ち込む一度きりのコマンドOKファイルに保存した瞬間に違法しましょう。

<追追記

いやあ思いのほかBuzzっちゃって^^;

awk代替がsubprocess?

awk適当に思いついたから入れただけでパイプ使ってるんだから他のコマンドも入ってますよ^^;

grepとかsedとかPythonで同様のことができる(実行時間現実的範囲で収まる)ならPython関数でお願いします。

読めないのか

読めませんよ。意図が。$1、$2とだけ書かれててそこにどういう値が入っているべきなのかコメントは書かれてませんし^^;

ハッカーの皆さんは当然コメントも書いてくださってますよね^^;

NOV1975 追記日本語が読めない増田だということがわかったし、業務を任せられない増田ということもわかった。君は一体何の増田なんだ

ソリティアやってますから置き物が必要になったら呼んでください^^;

2019-04-28

https://anond.hatelabo.jp/20190427071722

昔、伊藤という優秀なCTOがおって、1週間でソーシャルブックマークサービスをこしらえたり、Linuxカーネルソースを読んでみたり、意識の高いエントリを書いたりして、業界尊敬を集めておった。

その伊藤が、githubとあるプロジェクトページに目を止めた。明らかに個人開発で、プルリクの一つもなく、starも2,3というレポジトリだったが、伊藤は少し首をかしげて、感心したようにブックマークしたそうな。

それを見たユーザーが、あの伊藤さんが無言ブクマするぐらいだから、きっとこれはすごいレポジトリに違いない、これを書いたエンジニア天才だ、と口々に言って大騒ぎになった。

件のプロジェクトはあっという間に4桁のstarがつき、contributorsもわんさか増えていく。

作者のエンジニアが気を良くして、転職ドラフトに出てみると、提示年収うなぎのぼりに上がって、プログラマは高額年収で有力ベンチャー転職していったそうな。

その転職先に伊藤と親しい者がいて、マネージャーが「あの伊藤さんが認めた人材です」と言うものからソースを見てみるが、どうにも才能を感じぬ。

いったいどういう訳かと、チャット伊藤に聞いてみると

Perlプロジェクトなのに、ソースがどう見てもawkに見えたものでね。はてな、と思ってブクマしたのだよ」



以上、「はてなエンジニア」の小話でございます。ご査収ください。

2019-03-07

anond:20190306191019

それって、grep 案件では?

grep パン[正規表現]ティー


いや、grep じゃなくて sed でも awk でも perl でも何でもいいんだけど。正規表現が使えれば。

google検索じゃ使えないよね。たぶん。)

2019-02-06

COBOLってこんな言語

日経xTECHの元記事を読んでもCOBOLの特徴があんまり伝わってこない感じだし、かといってそれをディスってもしょうがないので、書いてみた。

https://anond.hatelabo.jp/20190205192741

COBOL本質的にはDSLなんだけど、一見汎用プログラミング言語に見えてしまってRubyPythonなんかと比較するのが誤解のもとではあると思う。今の人でも知ってそうなCOBOLに似ている言語はたぶんSQLで、データを処理するための専用言語。ただ、SQLは頑張ればすごく複雑なこともできるパワフルな言語で、だからこそ現代でも生き延びているわけだけど、COBOLはわりとシンプルデータ処理を想定している感じ。

SQLだけでアプリケーションを作れないのは触ったことある人なら誰でもわかると思う。普通JavaRubyで全体の流れを記述してデータベース入出力をSQLで書く。COBOLもそんな感じで、全体の流れをJCLやShellスクリプト、あるいはJP1のような運用管理ソフトで書く。SQLの1個の処理に相当するのがCOBOLコンパイル単位で、それごとにソースファイルが分割される。ひとつソースファイルに2個以上の処理を書くこともできるけど普通はしない。ここまで理解すると古いCOBOLに1ファイル内のすべての処理に影響するグローバル変数しかないのや、今のCOBOLコンパイル単位をまたぐ真のグローバル変数がないのも、それほどクリティカルではないことがわかると思う。もし、本当に複数の処理にまたがる値が必要なら、データベースに格納してしまえばいいんだし。

で、SQLでいうところのデータベースに相当するのがCOBOLではデータファイルsedawkテキストファイルCSVファイルを行ごとに処理するのとちょっと似てるけど、COBOL場合は固定長ファイルという点が違う。改行文字は入ってなくて、たとえば150バイトごとに次のレコードみたいな形式。これの1レコードごとに何月何日何時に〇〇という商品を□□円で売ったとか書いてあるのが典型的データの内容。それを集計して今日は〇〇が何個売れて売上がどれだけあったとか、出金合計がいくらで入金合計がいくらで、みたいな財務諸表を作ったり。SQLと同じように税率なんかが書いてあるマスタデータと、日々の売り上げが書いてあるトランザクションデータがあって、突き合わせたりということもする。こういう集計処理だからUIはなくて、夜中に自動起動するようなバッチプログラムが主な使われ方。(混乱するから余談だけど、今のCOBOLSQLを使って普通RDBにもアクセスできる。ただ使い方としては、RDBファイル処理→ファイル処理→ファイル処理→ファイル処理→ファイル処理→RDBみたいに、最初最後だけみたいなのが普通

入出力がファイルから今の感覚で考えるとアクセスは遅い。でもメリットもあって、1回に1行しかメモリに乗せないからどんな巨大なデータでも時間さえかければ処理できる。それこそ国民ひとりひとりの年金データとかね。あと、途中でバグ不正データで止まってもデータを失うのは最小限で済むので復旧が比較的楽だったり。

データベースの話に戻ると、テーブル定義はどこに書いてあるかというとデータファイル側ではなくてCOBOLプログラム側、というのがSQLと一番違うところかも。つまり、このデータファイル構造はこれこれこうなっていると想定して読みます、とソースコードに自分で書く。当然実際のデータ構造がそれと違ってたらおかしくなる。

まあそんな感じで80年代くらいに会計処理をする目的だったら悪い言語ではなかったので、銀行官公庁とか、電力水道ガスといったライフラインを扱う大企業がこぞって導入して今に至る感じ。普通大企業は途中でSunかに置き換えてその後Linuxクラウドさらに置き換えたりしたけど、最初に作ったシステムが大きければ大きいほど、重要であれば重要であるほど現代的な環境に置き換えられないというのが今の課題

2018-09-25

Perlの可読性が低いかどうかはともかく(そんなん主観しかないし)、sedawkで技巧的なことやるよりかはstraightforwardに書けるように思う。(あくま個人の感想です)

2018-01-14

IT業界某国スパイ巣窟

IT業界日本社会の縮図となっているんだよ - こうして僕らは腐る

http://www.byosoku100.com/entry/2018/01/13/212749

ITを学んでIT企業就職して、この国のIT企業はきっとCIAか何かによって弱体化を図られたとしか考えられないと思いました。

自分ロジック組んだり、アルゴリズムを考えたりする仕事をさせてくれている会社もありますが、会社の規模がでかくなればなるほどそういう仕事下流に任せる感が強い。まずこの構造が弱体化の出発点。

多重下請構造は、製造業日本ならではの伝統下流低賃金が根強い。背広を着た人がその伝統文化を売り捌く。文化が短納期、安請け合いを生み、短納期、安請け合いにより、品質が下がり、雇用も安く済まされ、弱いSEしかまらず、国際競争力はなくなる。この下請け構造文化を持ち込んだのは、他ならぬ製造業文化を固持してきたメーカーベンダーのように思えますメーカーベンダーCIAからなんだかのスパイ行為に加担したのでしょうか?

実はそんなメーカーベンダーにもいたのですが、ぽっと出の強いSEもいます。ところが強さが仇となり、全容を把握している神扱いで一段上に据えられます。そして多忙を極め、ロジックアルゴリズムをひねり出す知的生産力は、仕様書指示書と呼ばれるエクセル方眼紙に図形や文書を書き殴る作業力へと変貌します。

指示は全て自社フォーマット図面に書け!その図面審査承認課長に貰え!え?予算の都合、本部承認必要本部長いつ来るの?1週間後だって!?リスケだ!工数再見積もりだー…これは仕事ですか?それとも茶番ですか?こうして強いSEは弱体化します。強いSEほど自分の置かれた立場環境に順応しようとする意識が強く、仕事ができる人間になるためにはお上に楯突かず、弱体化を受け入れようと考えます

エクセルのvlookupを使うために、学生時代関数型言語を学んだわけじゃないのに…と就職して思うようになったunix文化を学んだ強いSEが、思考停止している情シスによって管理しきれないものは全てセキュリティホールみたいな会社にいたら、「あいつはセキュリティを脅かす不良社員」のレッテルを貼られ、朝から晩までvlookup,vlookup...(いやそのエクセル脆弱性情報パッチ出ているけど、いやお上のお達しを待て!的な茶番劇)せめてgrep,awk,sedくらい使わせてやれって、残業がなくなってボス最近社長の思いつきで始めた健康経営者として表彰されるかもしれんよ?思いつきだから明日あるか分からんけど…。いつまでこんな寸劇をやればいいのやら。学んだことは活かせません。茶番寸劇の中心にはやはりこの国のIT業界を弱体化させ国際競争力を低下させるスパイが潜んでいるとしかおもえません。

ここで、IT業界蔓延日本国際競争力をいちぢるしく低下させているスパイの特徴を述べておきます

・安請け合いをする無能な人

スパイ目的である国際競争力の低下にダイレクトアプローチするスパイ中のスパイです。こいつがいたら即辞めないと国や社会のためにも良くないです。

・「よく分からないものセキュリティの都合使えません」と思考停止している人

お前はそのツールコミッターでそのツール脆弱性を分かってそんな事を言っているのか?と、せめて同僚がツール有用性を知りつつ使いたいっていうならそれなりのセキュリティ的可用性を示すのが情シス仕事じゃねーのかと?まぁこ場合スパイなのでそんな調査は死んでもやりませんが…

・「ツール使用効率化ではなくズルだ!」と言い続ける人。

スパイの常套プロパガンダです。明らかにおかし言動なのでスパイの中では未熟者なのかもしれません。

・「大学で学んだことが社会では通用しない」と偉ぶる人

そのままで通用しないけど、出発点であるべき。でなければその空白を埋めるコストをどうしろと?そんな言葉マジで吐く人間は出発点にすら立たせて貰えていない場合が多い。ただ言葉を吐くスパイは、スパイが故に企業内の立場は上のほうにいるかもしれません。出発点に立っていなかろうが

法律無視する人

よく考えてみてください。遵法精神のあるスパイがいると思いますか?そもそもこのスパイ蔓延構造日本社会根深く浸透しているので、法律を取り締まる側もうまく騙されていると考える方が自然です。労基法下請法派遣法…機能しないのも当然です。

2017-04-15

http://anond.hatelabo.jp/20170415170545

動的型の言語流行ったのは、Webプログラミングの隆盛のおかげだろ。

大昔にテキスト処理のawkがあって、その発展版みたいなPerlが現れて、タイミングよくWebプログラミングの波がきて需要が拡大。

でもPerlは、awkの発展版だから、数値も文字列も全部文字列っていう設計思想

変数に型がない以前に、値に型がない。

で、そのPerlの影響を受けたRubyPHPがはやってしまって、動的型の言語の隆盛の時代に。

間違った世界線に入ってしまった。

 

一連のスクリプト言語の特徴は表記が簡略だってことだけど、これは型が動的か静的かというのは関係ない。

でも動的型派は、それが動的型の特徴だと思い込んで「動的型サイコー」みたいに言い出した。

10年くらい前にはハテナでも「Javaで書いたら50行のこの処理が、Rubyで書いたらたったの10行。Javaだせえ!」みたいなブログ流行った。

 

でも、静的型の言語も、今では記述の簡略化が進んで動的型のスクリプト系の言語メリットは薄れてる。

いまさら動的型でやるメリットはない。

2016-10-10

bashでやり始めたけど、いろいろ外部プログラムとの連携を考えるとpythonでやればよかったと思っている。

bashよりRのほうがまだましだったかもしれない。

bash変数文字列しか入らないことがめんどくさい。

awkが強力なのはわかったし、ディレクトリファイルの移動や検索、展開等は簡単だけど、

結局関数を作ったりするのには向かない

2016-07-18

Vimフィルタコマンドで使うUNIXコマンド

http://vim-jp.org/vimdoc-ja/change.html#filter

Vimにはフィルタコマンドといって、テキスト任意UNIXコマンドで処理するExコマンドが用意されている。

用意されていて、実際強力なんだけど、Vim組み込み機能で間に合うことも多くて、下記以外はあまり使っていない気がする。

以前はVim正規表現に慣れないからとPerlを使ってたりもしたけれど、Vim正規表現も悪くないかなとなって。こう。

何かおすすめUNIXコマンドがあったら教えてください。

bc

簡単計算をするときに使う。1行に計算式を書いて「:.!bc<CR>」あるいは「!!bc<CR>」とすると計算ができる。

(小数を扱いたいときは-lオプション指定する)

「<C-r>=」で代用できる。

sh

長めのコマンドを実行するときに使う。「:%!sh<CR>」とすると書いたシェルスクリプトを実行できる。

最近Bashの<C-x><C-e>で良い気がしてる。こちらだとヒストリで戻って<C-x><C-e>として再編集することもできるので。

column

簡単な整列をするのに使う。ビジュアルモード選択して「!column -t<CR>」とすると整列ができる。

(デフォルトのセパレータがスペース二つなので、一つにしたければ-oオプション指定して「!column -to' '<CR>」という風にする)

vim-easy-alignやvim-aligntaが入っているならそれでいいかも。

jq, xmllint, pup

それぞれJSONXMLHTMLを整形するのに使う。JSONは「:%!jq .<CR>」、XMLは「:%!xmllint --format -<CR>」、HTMLは「:%!pup<CR>」。

ただ「jq . <JSONファイル> | vim -」としていたりして、直接Vimの中で使ってない場合が多いかも。

awk

連番を振る時、重複行を削除する時、指定した列を抜き出す時、などなど、色々なことに使える。

それぞれ「:%!awk '{printf"\%-6d \%s\n",NR,$0}'<CR>」、「:%!awk '\!a[$0]++'<CR>」、「:%!awk '{print$2}'<CR>」といった風にする。

tee

保存するために管理者権限必要場合sudoと一緒に使う。「:%!sudo tee %<CR>」とすると保存できる。

編集中のテキストを何処かに残すため……と思ったけど:wで事足りる。

2016-07-01

【決定版】プログラミング言語を徹底解説!



http://cpg.hatenablog.com/entry/2016/06/30/193755

【決定版】プログラミング言語を徹底解説!

プログラミング言語は、200種類以上存在していると言われていますが、その亜種や野良プログラミング言語を含めれば、星の数ほどあります。たとえば今回紹介しませんが、ベーシックという言語だけでも、ファミリーベーシックプチコン3DSベーシック)、べーしっ君などがあります

今回はその中から厳選に厳選を重ねて厳選した、プログラミング言語を5つ、徹底解説します。

では早速解説していきます!!!

1.Perl

Perl歴史的に古く、sedawkといった歴史として語られる以前のプログラミング言語のいいとこどりをした、とても、素晴らしい言語だ。

モンスト以前のmixiや、みんな大好きはてブはてなブログは、Perlで作られています

学習する際は、歴史が古い分、Perl4の本も、たまに図書館に残っているため、気を付けなければなりません。

2.Perl

よく勘違いされるのが、「PerlPearlって似てるんでしょ?」。違います

何が違うかといいますと、文法から用途までほぼ全てが違います

Pearlとは?

Pearlとは真珠のことだ。あと、バンドメンにとっては楽器。それと、譲れない願いかPEARLCDを買った人も、いるんではないでしょうか。

Perlは?

PerlはAndoridにも、対応してたりします。

https://www.infoq.com/jp/news/2014/06/perl520

3.Perl

Webサービスを開発したい場合、真っ先にお勧めしたいのがPerlだ。

Perlの特徴として、[[TMTOWTDI]]があります。あとPerlを生み出したLarryは、プログラマの3台美徳として、 "Laziness, Impatience and Hubris"というすばらしい考え方があります

https://en.wikiquote.org/wiki/Talk:Larry_Wall

4.Perl

皆さんはAIをご存知ですか?

PerlAI(Artificial Intelligence)でググッテても、わかるように、2000年台前半からすでに話題に上がっており、最近流行ディープラニングでも、Perl6を使った話があるようだ。

http://ai.neocities.org/P6AI_FAQ.html

5.Perl

iPhoneで動くPerlもありますアプリあります

https://itunes.apple.com/jp/app/perl-programming-language/id486217730

だんだん書くのが疲れてまいりました。

http://blogs.perl.org/users/lestrrat/2013/09/perlmotion-perl-for-ios.html

あとはlestrratさんにおまかせします。

それとYAPCは去年で一区切りしましたが今年も、YAP(achimon)C::Asia Hachioji 2016 mid in Shinagawa あります!!!!!!

http://yapcasia8oji-2016mid.hachiojipm.org/

2016-05-13

awkを使って合計平均分散偏差を計算する

#!/usr/local/bin/awk -f

BEGIN{

   print "sum", "ave", "var", "std"

   sum=0;

   count=0;

   var=0;

}

{

 if(($1 !~ "#")&amp;&amp;($1 !~ "@")){

    sum+=$2

    var+=$2*$2

    count++

};

}

END{

   ave=sum/count;

   var/=count;

   var-=ave*ave;

   std=sqrt(var);

   print sum, ave, var, std;

}

2016-03-31

http://anond.hatelabo.jp/20160331101136

うーん、さすがに今回の話はLinuxユーザースペースをWindowsに載せるって話だから

逆は難しいように思うけどね。

しろgrepとかawksedみたいなツールWindows移植やリコンパイルじゃなくて

そのままのバイナリが動くってのがキモだよね。

この辺のツール使いたくてMac選んだユーザーは端末の選択肢広がって良いと思う。

2015-08-19

http://anond.hatelabo.jp/20150818233553

Perl 以降の LL しか使えない人は多いですね。

最近sed / AWK で足りてても、他人が読めるように Ruby で書いてばっかりですorz

http://anond.hatelabo.jp/20150818233553

Perl 以降の LL しか使えない人は多いですね。

最近sed / AWK で足りてても、他人が読めるように Ruby で書いてばっかりですorz

2015-08-18

http://anond.hatelabo.jp/20150818231612

間違ってるのが何か分かってないんだからそこは「cat -n | grep 肛問」じゃなくて「awk '!a[$0]++{print$0,NR}'」としようよ……。

あと「sed 's/../&\n/g'」でいいものperlでやらんでも。

(「grep -vn 肛門」というのもありか……)

2014-09-02

http://anond.hatelabo.jp/20140902155559

というか、ちょい複雑なシェルスクリプト書く場合とかにPHPで書くケースは結構あるで。mapとかreduce、filterとか普通に使えるからな。

そんな奴見たこと無い。awkとかで大概どうでもなるし、

巨大なスクリプト時間が気になる様ならpythonとかで書き換えたりする。

PHPシェルスクリプト内で使うなんていう基地外は見たことが無い。

お前の言う複雑なシェルスクリプトってなんだ?

2012-08-27

サーバ情報監視の仕組み

cf). Software Design 2010/01号

vmstat を実行するスクリプトを書く
!#/bin/sh
vmstat 5 2 | tail -1 | awk '{print $4,$5,$6}'
xinetd のサービスとして動くようにする
  1. /etc/services にポートプロトコルを登録する
    • agent_mem 11001/tcp # memory monitoring
  2. xinetd が実行するための設定ファイルを書く
    • /etc/xinetd.d/agent_mem
  3. xinetd の再起動
  4. telnet で動作確認する
service agent_mem
{
        socket_type     = stream
        protocol        = tcp
        wait            = no
        user            = nobody
        server          = Monitor/agent_mem.sh
        only_from       = 127.0.0.1
        disable         = no
}
xinetd に登録したポートを叩くスクリプトを書く

php場合、fopen() でもいけると思うのだが、明示的に sockopen() を使う。うむ、perlよりも楽だわこりゃ。

&lt;?php /* -*-java-*- */
/**
 * モニタリングクライアント
 * 
 */
$fp = fsockopen( 'localhost', 11001, $errno, $errmsg, 30 );
if ( !$fp ) {
    echo "Error: $errno - $errmsg \n";
}
else {
    echo date('Y-m-d H:i:s'). "\t";
    $stmt = fgets ( $fp, 128 );
    if ( preg_match( "/([0-9]+) ([0-9]+) ([0-9]+)/", $stmt, $regs ) ) {
        $total = (int)$regs[1] + (int)$regs[2] + (int)$regs[3];
        echo $regs[1]."\t".$regs[2]."\t".$regs[3]."\t".$total."\n";
    }
    fclose( $fp );
}
cron に登録してログを取る。もしくは、スクリプトを while(1)で実行させておく

こいつをモニターとして走らせっぱなしに出来るようにする。

&lt;?php /* -*-java-*- */
/**
 * モニタリングクライアント
 * 
 */

function mem_monitor ( $host, $port ) {
    $fp = fsockopen( $host, $port, $errno, $errmsg, 30 );
    if ( !$fp ) {
        echo date('Y-m-d H:i:s'). "\t";        echo "Error: $errno - $errmsg \n";
    }
    else {
        echo date('Y-m-d H:i:s'). "\t";        $stmt = fgets ( $fp, 128 );
        if ( preg_match( "/([0-9]+) ([0-9]+) ([0-9]+)/", $stmt, $regs ) ) {
            $total = (int)$regs[1] + (int)$regs[2] + (int)$regs[3];
            echo $regs[1]."\t".$regs[2]."\t".$regs[3]."\t".$total."\n";
        }
        fclose( $fp );
    }
}

while( 1 ) {
    mem_monitor( 'localhost', 11001 );
    ob_flush();
    flush();
    sleep( 30 );
}

2012-07-27

http://d.hatena.ne.jp/Yamashiro0217/20120727/1343371036

ほとんど awk 使えば簡単ね。

問1

cat logfile

問2

awk -F',' '{print $1","$4}' logfile

問3

awk -F',' '$1=="server4"{print $0}' logfile

問4

cat logfile | wc -l

問5

sort -t',' -k1,1 -k3,3n logfile | head -5

問6

sort logfile | uniq | wc -l

問7

awk -F',' '{print $3}' logfile | sort -n | uniq | wc -l

問8

awk -F',' '{print $4}' logfile | sort | uniq -c | sort -nr | head -1

問9

awk -F',' 'gsub("server","xxx"){print $1}' logfile | sort | uniq -c

10

awk -F',' '$3&gt;=10{print $3}' logfile | sort -n | uniq

http://anond.hatelabo.jp/20120727173018

問3をgrepでやるならせめて ^server4, とすべき。server40があるかもしれないし、URLにserver4って文字が存在する可能性がある。

あとはもうちょっとawk勉強すると大体ほとんど全部awkで出来るということに気付くはず。

http://d.hatena.ne.jp/Yamashiro0217/20120727/1343371036

# cat a.log

# cat a.log |awk -F"," '{print $1","$4}'

# grep server4 a.log

# cat a.log |wc -l

# sort -t"," -k1,1 -k3,3n a.log | head -5

# sort a.log |uniq |wc -l

# cat a.log |awk -F"," '{print $3}' |sort |uniq |wc -l

あとはシェルスクリプトを作らないと無理そうなのでパス

追記

他の人の回答見ました。

http://anond.hatelabo.jp/20120727180525

パイプでつながなくてもawkファイル指定できるのとIFができるのとuniq -cは知らなかった。

今度使ってみよう。

2009-03-22

久しぶりにコードを書いた

pythonは相変わらず行末に;を置いてしまう。

awkで始めてifとwhileを使った。

CakePHPよりもRailsの方が触りやすいような気がした。

アーカイブ ヘルプ
ログイン ユーザー登録
ようこそ ゲスト さん