おーはーよー (っ´∀`)っ うー
実は未だにスライド書いてる (っ´∀`)っ ゃー です。
いよいよ本日 USP友の会主催 「基礎から学ぶLINUX シェルスリプト講座」第2回 開催です。前回はスライドのみでしたが、今日は実習の時間もありますので、非常に内容てんこ盛りです!参加表明いただいた皆様ありがとうございます!残席僅かですので、もしかしたらこれから参加される方は立ち見になってしまうかも知れませんが、奮ってご参加を。 http://kokucheese.com/event/index/3278/
悔しいのでこっちに。
while true; do free -m ; [ $(expr $(free -m | grep ^Mem | awk '{print $2}') \/ 2) -lt $(free -m | egrep ^Mem | awk '{print $3}') ] && for i in `echo 3 2 1 0`; do sync ; sudo /sbin/sysctl -w vm.drop_caches=$i; done; done
スペースとTABが混在しているテキストにおいて、普通にawkで区切ると、両方とも区切り文字として認識されます。しかし、「スペースかTABのどちらか」を区切り文字にしたい場合は、次のようにします。
【サンプルのテキスト】
sh-3.2$ cat hoge
1 2 3 4 5 6
ちょっとわかりにくいので、スペースをアンダーバーに置換してみます。
sh-3.2$ cat hoge | sed -e s/\ /_/g
1_2 3_4_5 6
つまり、テキストファイル「hoge」は、2列目と3列目、5列目と6列目の間がTABで区切られている状態です。
【TABを区切り文字にする】
sh-3.2$ cat hoge | awk 'BEGIN {FS="\t"}{print $2}'
3 4 5
【スペースを区切り文字にする】
sh-3.2$ cat hoge | tr " " _ | awk 'BEGIN {FS="_"}{print $1,$2}'
1 2 3
sh-3.2$ cat hoge | tr " " _ | awk 'BEGIN {FS="_"}{print $1"\t"$2}'
1 2 3
sh-3.2$ cat hoge | tr " " _ | awk 'BEGIN {FS="_"}{print $2}'
2 3
かなり力ワザですがw
一旦スペースをアンダーバーに置換してから、アンダーバーを区切り文字にすることで解決。
もっとスマートなやり方があったら教えてください!><
