1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

俺的Shellワンライナーチートシート(仮)

Last updated at Posted at 2020-01-14

はじめに

変態ワンライナーシェル芸人を目指す私が,ああこれどうやって書くんだっけ,という時に見るやつ.いつか整理する.この世の全てをパイプで繋ぎたい.
よくcで書いて出てきたログファイルをshellで処理しています.

ファイルが存在していたら削除

non-oneline.sh
if [ -f hoge.log ]; then
    rm hoge.log
fi
oneline.sh
test -f hoge.log && rm hoge.log

変数を使い回す時に四則演算する

cのdefineで設定する定数をshell側でも使い回したい時がある.しかも,四則演算したい時がある.1引きたいとか.
例えば,100回のイテレーションをcで回して,出てきた100回分の生データをshell側でforループで回して処理したい.この時,shell内で変数を0-99の間で動かしたい.みたいな.うまく説明できない.

結論,exprは遅いので,$((...))を使いましょう,という話.

analyze.sh
NUM_ITERATION="100"

gcc -DNUM_ITERATION=${NUM_ITERATION} -o ./simulation ./simulation.c
./simulation > ./raw.log

for i in `seq 0 $((NUM_ITERATION -1))`; do
    grep "episode ${i}" ./raw.log | awk '{hoge}'
done

grepでAND/OR

ANDは直感通り,ORはいっつも忘れちゃう.

letsgrep.sh
# grep de AND
cat file.log | grep "hoge" | grep "fuga"

# grep de OR
cat file.log | grep -e "hoge" -e "fuga"
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?