Skip to main content

[書評] シェル・ワンライナー160本ノックの1章を読んでわからないことをまとめる

1日1問、半年以内に習得 シェル・ワンライナー160本ノック
を買ったマスタカ
シェル芸人に一歩出るわけだ

第1章 Linux環境
を読んだので不明点をまとめる


・Ctrl + D
コマンド待ちの状態でもう入力がないことを伝える

 

・grep
grepでハイフン付きのキーワードを検索する
–をつける
https://linux.just4fun.biz/?%E9%80%86%E5%BC%95%E3%81%8DUNIX%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89/grep%E3%81%A7%E3%83%8F%E3%82%A4%E3%83%95%E3%83%B3%E4%BB%98%E3%81%AE%E3%82%AD%E3%83%BC%E3%83%AF%E3%83%BC%E3%83%89%E3%82%92%E6%A4%9C%E7%B4%A2%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95
grepで該当する箇所だけ出力する
grep -o

 

・seq
seq 5
で1~5を順番に出す

seq -w 100
で接頭辞に0をつける

 

・awk
条件式
seq 5 | awk ‘$1%2==0’
print
seq 5 | awk ‘/(2|4)/ {print($1″ 偶数”)}’
if-else
seq 5 | awk ‘{if($0%2==0){print($1″ 偶数”) } else {print($1″ 奇数”)}}’
BEGINとENDで最初と最後の処理を記載する
seq 5 | awk ‘BEGIN{a=0} {if($0%2==0){print($1″ 偶数”); a=a+$1 } else {print($1″ 奇数”); a=a+$1}}END{print “合計”a}’
if elseは省略できる
seq 5 | awk ‘$1%2==0{print($1″ 偶数”) } $1%2==1{print($1″ 奇数”)}’
seq 5 | awk ‘BEGIN{a=0} $1%2==0{print($1″ 偶数”) } $1%2==1{print($1″ 奇数”)} {a+=$1}END{print “合計”a}’
{a+=$1}は条件がないか全部に適応される
条件{アクション}がawkの処理
改行を消す
printfで出力すればよい
https://it-ojisan.tokyo/awk-delete-newline-code/
複数行
# 1つ目の正規表現にマッチする行から2つ目の正規表現にマッチする行までを出力
sed -n -e /xxx/,/yyy/p
https://hydrocul.github.io/wiki/commands/sed.html

 

・xargs
データを任意の位置に展開する
xargs -I@ echo @
xargs -I@ echo @.jpeg
https://qiita.com/hitode7456/items/6ba8e2d58f9b8db9de11

 

・接頭に0をつけて桁数を固定する
最初に必要なだけ0を頭につけて後できれば楽
これは良いアルゴリズムだね
ls * | sed -e s/^/0000000/ | sed -e ‘s/0*\([0-9]\{7\}\)$/\1/g’

 

・tac
逆順で出力
https://linuxjm.osdn.jp/html/GNU_coreutils/man1/tac.1.html

 

・%5s
文字列が5文字で成形する
https://shellscript.sunone.me/input_output.html

 

まだまだ続くよ

関連記事:

Pocket