shellスクリプトの一般的な処理

2163 ワード

1.日付パラメータがカスタムフォーマットに変換される(コマンドを実行する記号`と‘の違いに注意)
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