shellスクリプトの一般的な処理
2163 ワード
1.日付パラメータがカスタムフォーマットに変換される(コマンドを実行する記号`と‘の違いに注意)
2.awk文字列処理(リダイレクト文字の左端にスペースが必要であることに注意)
3.文字列切り取り
4.文字列比較のif文([]番号前後スペース注意)
5.shell演算(かっこの使用仕様に注意)
6.文字列の結合
yes=$1
echo $yes
mils=`date -d "$yes -1 day" +%s` #
echo $mils
yesterday=`date -d @$mils +%Y/%m/%d` # yyyy/mm/dd
echo $yesterday
mils=`date -d "$yes -3 hours -1 day" +%s` # 3
echo $mils
2.awk文字列処理(リダイレクト文字の左端にスペースが必要であることに注意)
cat a | awk '{print $NF}' > b # a b
sort b > c # b c
sed -e '/items/d' c > d # c items
awk '{if(NR%2!=0)ORS="\t";else ORS="
"}1' d > e # , tab
eg:
[a]
Found 2 items
-rwxrwx--- 3 hdfs hdfs 1279029 2018-10-22 22:32 /tmp/1.jhist
-rwxrwx--- 3 hdfs hdfs 142394 2018-10-22 22:32 /tmp/1.xml
Found 2 items
-rwxrwx--- 3 appsearch_dev hdfs 19667953 2018-10-22 00:39 /tmp/2.jhist
-rwxrwx--- 3 appsearch_dev hdfs 142346 2018-10-22 00:39 /tmp/2.xml
[e]
/tmp/1.jhist /tmp/1.xml
/tmp/2.jhist /tmp/2.xml
awk -F , '{print $(NF-1)}' part > cost # , , cost
awk -F '[:\"]' '{print $(NF-1)}' part >cost # : " , ,
awk '{sum += $1};END {print sum}' cost # cost
3.文字列切り取り
yes=$1
ymd=`expr substr $1 1 8` # 1-8 ,substr 1
hh=`expr substr $1 9 2` # 9 2
yes="$ymd $hh" # , 20181010 10
4.文字列比較のif文([]番号前後スペース注意)
yes=$1
mils=`date -d "$yes -3 hours -1 day" +%s`
update_hour=`date -d @$mils +%H`
h23="23"
if [ "$h23" = $update_hour ]; then
#exec your conmand
fi
5.shell演算(かっこの使用仕様に注意)
#shell , 2 , 。 / ,
sum=0
cat test.txt | while read line # while ,for
do
time=`echo $line | awk '{print $1}'`
mem=`echo $line | awk '{print $2}'`
res=$(echo "$mem/$time" | bc) # , bc
sum=$(($res+$sum)) # ,
echo $sum
done
6.文字列の結合
prefix=hello,
back=world
firstCode=${prefix}${back}
echo $firstCode