shell

シェルワンライナー #2.1.e クォートと変数

1. 2.1.e. クォートと変数 awkを使う際に引数に与えるAWKコードを シングルクォート('') で囲っていたが、これには2つ意味がある {print 1+1}の様に空白の入った引数を一つにまとめて引き渡し {printと1+1} の2つの引数として渡さない $1 などのAWKの変数が…

シェルワンライナー: 2.1.b. 変数を使った計算

1. 2.1.d. 変数を使った計算 Bashの変数は単なる文字列だが、一時的に文字列を数字として扱える。 Bashでは$(())の中に計算式を書くと計算ができる。 この記号は 算術式展開と呼ばれる 算術式展開で使える演算子はman bash の 「算術式評価」の項目にある。 …

シェルワンライナー #2.1.c: 文字列の連結と置換

1. 2.1.c. 文字列の連結と置換 ここでは文字列の操作をおさえる 1.1. 練習問題 1.1.1. 問題と答え ----準備---- $ a=私は $ b=俳優よ ----ここから答え---- $ c=$a$b; echo $c 私は俳優よ $ a+=$b; echo $a 私は俳優よ $ b=${a:0:1}${a:2:2}; echo $b 私俳優…

シェルワンライナー #2.1.b. シェルと変数

1. 2.1.b. シェルと変数 ここでは変数の基礎をおさえる Bashで変数を定義するときは変数名=値となる文字列と記述する。 コマンド入力する際使いたい位置に $変数名** あるいは ${変数名}と書くと値の文字列に置き換わる 1.1. 練習問題 1.1.1. 問題 Bashが持…

シェルワンライナー #2-1a (標準入出力について解説)

はじめに ここから2章スタート bashについて細かく説明してくれるらしい。 2-1では、標準入出力とシェルの文法の基礎を説明してくれるらしい。 理解したことをメモ コマンド結果をファイルに出力するリダイレクトは ls > a と書けるし、ls 1> a とも書ける。…

シェルワンライナー #10

Markdownファイルの見出し書式を変更するコマンドについて Markdownファイルの見出し書式を変更するために、以下のコマンドを使用することができます。 cat headings.md | sed -r 's/^## +(.)/\1\n---/' | sed -r 's/^# +(.)/\1\n===/' コマンドの解説 この…

シェルワンライナー #9

問題 apacheのログを決まった期間抜き出す問題 回答 cat log_range.log | sed -n '/24\/Dec\/2016 21:..:../,/25\/Dec\/2016 03:..:../p' sed -n '/hoge/,/piyo/p' について sed コマンドは、Unix系オペレーティングシステムで使われるストリームエディタで…

シェルワンライナー #8

問題 183.YY.129.XX - - [07/Nov/2017:22:37:38 +0900] ... こういう入力で午前と午後の行を数える 回答 cat access.log | awk '{split($4,a,":"); print a[2]}' | awk '{if($1>=0 && $1<12) am++; else pm++; } END{print "AM:" am ", PM:" pm}' 出力結果 A…

shell script 特定ディレクトリをスキップ

# スキップしたいディレクトリ名をスペース区切りで指定 skip_dirs="hoge piyo" # 現在のディレクトリ以下で、名前が '*.dir' にマッチするディレクトリを検索し、それぞれに対してループを実行 for path in $(find . -name '*.dir' -type d); do # path の…

シェルワンライナー #7

問題 与えられたテキストに対する税率の計算。 2019/10以前なら8%。それ以降ならば、8%と10%。商品名に*がついているのは8%。 1 20190901 ゼロカップ大関 10000 2 20190902 *キャベツ二郎 130 3 20191105 外食 13000 4 20191106 ストロングワン 13000 5 2019…

シェルワンライナー #6

問題 下の出力 が 得 られる ワン ライナー を 作っ て ください。 x x x x x 回答 seq 5 | awk '{for(i=5;i>$1;i--){print " ";} print "x";}' # これだと改行しちゃう # 改行したくないときは printfを使えばOK seq 5 | awk '{for(i=5;i>$1;i--){printf " …

シェルワンライナー: 問題5

問題 ファイル ntp.confについて、poolの項目( 1列目にpoolと書かれている行)にあるサーバの名前 を抽出してみましょう。 回答 # 自分の回答 cat ntp.conf | awk '$1=="pool" {print $2}' # ちなみにテキストの答えはこちら # こっちのが書きやすい。 # ス…

シェルワンライナー160本ノック: 問題4

問題 まず、ランダムな数字が入ったファイルをたくさん作る $ mkdir ./tmp $ cd ./tmp $ seq 1000000 | sed 's/^/ echo $ RANDOM > /' | bash これで1000000個のファイルが作成され、各ファイルに0-32767のうち一つの整数がランダムに記述されている。という…

シェルワンライナー160本ノック: 問題3

問題 下記コマンドで100万個ファイルを作る $ mkdir ./tmp $ cd ./tmp $ seq 1000000 | xargs -P 2 touch このファイルを先頭に0つけて7桁のファイルにするようにする 答え $ time ls -U | xargs -P2 rename 's/^/0000000/;s/0*([0-9]{7})/$1/' 解説 まず re…