タグ

shellとLINUXに関するshuuuuunyのブックマーク (8)

  • プログラム言語 awk Linux/Unix利用者向け一行コマンド

    1行プログラミング awk でデータの単純なフォーマット変換することを目的としています。 まず、次のようなデータ(/tmp/a とします)に対して、処理を行うことを考えます。 1 2 3 4 -5 6 7 8 0 9 10 113 入力行の総数を印字する 入力行の総数を出力します(他の方法 cat /tmp/a | wc)。 cat /tmp/a | awk 'END {print NR }' 実行結果 3 N行目の入力行を印字する 3行目の入力行を出力します(他の方法 cat /tmp/a | head -3 | tail -1)。 cat /tmp/a | awk 'NR==3' 実行結果 9 10 113 N個より多い欄を持つすべての入力行を印字する 1 行に3 個以上のデータが記述されている行をすべて出力する。 % cat /tmp/a | awk 'NF > 3 {print}'

    プログラム言語 awk Linux/Unix利用者向け一行コマンド
  • なるべく書かないawkの使い方 - ザリガニが見ていた...。

    awkという、古くからのスクリプト言語がある。(1977年生まれ。読み方は「オーク」である。エイ・ダブリュ・ケイではない)man awkをPDFに変換してみると、たったの3ページ強しかない。 $ man -t awk|pstopdf -i -o ~/Downloads/awk.pdf とてもシンプルな言語仕様ではあるが、awkには必要十分な表現力がある。特にテキストを処理する場面においては、最小限のシンプルな記述で、気の利いた処理を素早くこなす。無駄のないawkワンライナーを見ると、ある種の感動を覚える。awk以降に生まれたスクリプト言語は、少なからずawkの影響を受けていると思われる。 awkを知ることで、間違いなく幸福度は上がると思う。いつかきっと「知ってて良かった」と思える時が来るはず。もっともっと、awkを知りたくなってきた。 基動作 awkの基動作は、とってもシンプルである。

    なるべく書かないawkの使い方 - ザリガニが見ていた...。
  • フィルタを使用した文字列操作 1 | UNIX & Linux コマンド・シェルスクリプト リファレンス

    → パイプでフィルタに加工したいデータを受け渡し、目的とする文字列を抽出するフィルタリング処理を行う。 パイプを使用して不必要な文字列を消去する、または適切な位置に文字列を付加する、といったフィルタを挟み込むことで目的とするデータを抽出する。 また、フィルタをパイプで複数連結することで、より複雑なフィルタリング処理を実現することができる。 sed コマンドを使用したフィルタリング 文字列 A を文字列 B に置換する sed コマンドはさまざまな機能を持ったコマンドだが、主には文字列の置換処理に利用されるコマンドである。置換処理を行う場合には、置換対象と置換後の文字列を指定してコマンドを実行する。置換対象の指定には一部の正規表現を使用することも可能である (一部の正規表現は使用できない。また、sed のバージョン等により使用できる正規表現も異なる)。 各行の最初に一致した文字列のみ置換 →

    フィルタを使用した文字列操作 1 | UNIX & Linux コマンド・シェルスクリプト リファレンス
    shuuuuuny
    shuuuuuny 2014/10/15
    文字列
  • grepした結果をsed(正規表現置換)したかったときにMacだとハマった話 - 憧れ駆動開発

    だいたい基的にLinux前提で書かれている ググってよくみつかるのは以下のワンライナー grep -r hoge * | xargs sed -i "s/hoge/hufa/g" ハマってる話をあまり聞かない限りは、たぶんこれで基的にできるんだろう。 Macだとsedがハマる そもそもMacのsedはBSD経由のsedらしくて、GNU版のsedとは違うらしい。だから -i オプションがつかえなかった。ということでbrewでgnu-sedいれた。port版もちゃんとあるらしい brew install gnu-sedコマンドは gesd になる。あとはgnu-sedなのでいつもどおりなsedが使える。と思う あるプロジェクト以下の文字列を一括変換したかった grep -rl hoge ./ | xargs gsed -e -i "s/hoge/hufa/g"できたし!!!! @xxxxx

    grepした結果をsed(正規表現置換)したかったときにMacだとハマった話 - 憧れ駆動開発
  • findで空のディレクトリを削除する - hogehoge foobar Blog Style Beta

    たくさんあるディレクトリの中からファイルが一つも無いディレクトリ(いわゆる空ディレクトリ)を削除する方法です。 削除する方法としては、findで空ディレクトリを探して、見つかったディレクトリを削除するという方法になります。 空ディレクトリの検索はfindでファイルタイプを指定(-type d) + 空(0byte)のファイルやディレクトリを検索指定(-empty)をします。*1 ディレクトリ削除については、「xargs」「-exec」「-delete」を使う方法があります。 xargsを使用したサンプル find . -type d -empty | xargs rm -rf -execを使用したサンプル find . -type d -empty -exec rm -rf {} \; -deleteを使用したサンプル ※「-delete」オプションはBSD系(FreeBSD,Mac OS

    findで空のディレクトリを削除する - hogehoge foobar Blog Style Beta
  • pgrep, pkillでプロセスをkillする - 右往左往ブログ

    特定のプロセスをkillするときは、いつも以下のようなコマンドを使っていました。 # ps -ef | grep java | grep -v grep root 12927 1 2 15:51 pts/0 00:00:05 java -Xmx64m -jar start.jar # kill 12927 もっといい方法はないのかと思っていたら、pgrepやpkillという方法があるのを知りました。 pgrepは、プロセス名で絞り込んだPIDを表示させることができます。 # pgrep java 12927 -lオプションの場合、コマンドが表示されます。 # pgrep -l java 12927 java ただ、複数のプロセスがある場合は、区別がつきません。 この場合は、-fオプションにより詳細が表示されます。 # pgrep -lf java 12927 java -Xmx64m -j

    pgrep, pkillでプロセスをkillする - 右往左往ブログ
  • PS1とPROMPT_COMMAND, GNU screenでの活用も

    B! 24 0 0 0 前回プロンプトの事を書いたので、 ついでにPROMPT_COMMANDの設定についてメモしておきます。 GNU screenを起動させている時についても。 PROMPT_COMMAND PS1, PS2, PS3, PS4 PS1 PS2 PS3 PS4 PS1とPROMPT_COMMANDの使い分け プロンプトの表示 ターミナルのタイトルバーの表示 GNU screen内での表示 おまけ PROMPT_COMMAND bashにはPROMPT_COMMANDと言うシェル変数があり、この値に指定したコマンドが 各コマンド実行後に処理されます。 PROMPT_COMMAND='echo command finish' としておけば、毎回コマンド実行後にcommand finishが表示されます。 (Enterだけ押した場合にも。) PS1, PS2, PS3, PS4

    PS1とPROMPT_COMMAND, GNU screenでの活用も
  • カレントディレクトリのプログラムを実行するには

    というエラーメッセージが表示されて、実行することはできない(xxxはプログラムの名前)。これは、パスにカレントディレクトリが含まれていないために発生する現象なので、実行するにはパスにカレントディレクトリを含めればよい(パスに新しいディレクトリを追加するには参照)。 ただし、そうする前に、なぜデフォルトではカレントディレクトリにパスが通っていないのかを考える必要がある。 それは、カレントディレクトリのプログラムが無条件に実行されるのは好ましくないからである。パスの通ったディレクトリにあるプログラムと同名のファイルがカレントディレクトリにあった場合、パスの順番によってはカレントディレクトリのプログラムが実行されてしまい、ユーザーの意図に反した結果になってしまう。 さて、パスとは関係なく、カレントディレクトリにあるプログラムを実行するには、フルパスでプログラム名を指定すればいい。しかし、これだと

  • 1