1. 程式人生 > >[置頂]Shell碎碎念

[置頂]Shell碎碎念

1. 字串如何大小寫轉換

str="This is a Bash Shell script."

1> tr方式     

newstr=`tr '[A-Z]' '[a-z]' <<<"$str"`或者 newstr=$(echo $str |tr '[a-z]' '[A-Z]')

2> typeset 

typeset -u VARIABLE (把VARIABLE的小寫轉換成大寫)

typeset -l VARIABLE (把VARIABLE的大寫轉換成小寫)

如:

[[email protected] ~]$ typeset -u str
[[email protected]

~]$ str="This is a Bash Shell script."
[[email protected] ~]$ echo $str
THIS IS A BASH SHELL SCRIPT.

2. 判斷變數中是否包含某個字串

str="this is a string"
[[ $str =~ "this" ]] && echo "\$str contains this"

3. 將文字檔案的內容按行儲存到陣列中

#!/bin/bash
i=0
while read line
do
   a[$i]="$line"
   i=$[$i+1]
done < dept.txt
for (( i=0; i<3; i++ )) do echo "${a[$i]}" done

注意:在這裡就不要用 cat dept.txt |while read line了,因為管道的命令都是在子Shell中執行的,這意味著在子Shell中賦值的變數對父Shell是無效的。在本例中,該指令碼無法讀取賦給陣列的值。

4. 昨天的日期

   date -d "1 day ago" "+%Y-%m-%d"

   date -d last-day +%Y-%m-%d

5. 指定日期的後一天

   date -d "20150303 1 days" +%Y%m%d

6. awk將最後一行的每一列分行列印

     awk 'END{for(i=1;i<=NF;i++){printf "%s\n",$i}}'

7. AWK去掉空格

   1>    sub(/^[[:blank:]]*/,"",變數) 是去掉變數左邊的空白符
           sub(/[[:blank:]]*$/,"",變數) 是去掉變數右邊的空白符
           gsub(/[[:blank:]]*/,"",變數) 是去掉變數中所有的空白符

    譬如:echo " hello world " | awk '{gsub(/[[:blank:]]*/,"",$0);print "|" $0 "|"}'

             |helloworld|

    2>    echo " hello world " | awk '{sub("^ *","");sub(" *$","");print "|" $0 "|"}'

            |hello world|

8. shell中如何實現數值向上取整

   a=1.1

echo $a|awk '{print int($a)==$a?$a:int($a+1)}'

9. 如何顯示Shell指令碼的執行過程

    1> sh -x 1.sh

    2> 

#!/bin/bash -x
word1=Hello
word2=World
echo $word1 $word2

    執行結果如下:

[[email protected] ~]$ ./1.sh   -->>注意執行的方式,如果是sh 1.sh則沒有這種效果
+ word1=Hello
+ word2=World
+ echo Hello World
Hello World

   3> 只希望一部分顯示執行過程,可使用set -x 和set +x

[[email protected] ~]$ cat 1.sh
#!/bin/bash
set -x
word1=Hello
word2=World
set +x
echo $word1 $word2
[[email protected]
~]$ ./1.sh + word1=Hello + word2=World + set +x Hello World

10. > /dev/null 2>&1  

       將標準輸出和標準錯誤重定向到/dev/null中

11. 陣列

$ fruits[0]="Apple"
$ fruits[1]="Grape"
$ fruits[2]="Orange"
$ echo "${fruits[0]} ${fruits[1]} ${fruits[2]}"
Apple Grape Orange
$ fruits=("Apple" "Grape" "Orange")   -->> 如何對陣列進行賦值
$ echo "${fruits[0]} ${fruits[1]} ${fruits[2]}"
Apple Grape Orange
$ echo "${#fruits[@]}"   -->> 如何獲取陣列的個數
3
$ echo "${fruits[@]}"   -->> 如何獲取陣列的值
Apple Grape Orange

12. 如何用grep去掉空格和註釋

     grep -Ev "^$|^#" db_install.rsp 

13. 如何找出tkprof命令生成的outputfile中的select語句

     awk 'BEGIN{i=0;j=0}{if($0~"select"){i=NR;j=NR;print "\t"}if($0~/^$/) j=NR;if(i==j) print $0 }' 1.txt

     因為select語句沒有寫在一行,且select語句結束以後會有空行,所以解決的思路是列印select及select以下的行,直到空行。所以當碰到select語句的時候,將行值賦給i和j,當碰到空行時,將行數賦給j,這樣j就發生了改變。判斷是否列印所在行的值就看i和j是否相等。

     這樣打印出來的內容會有點難看,select和select語句之間沒有空行,所以在碰到select的時候就列印一個空行。

     注意:判斷空行的寫法/^$/,BEGIN{i=0;j=0}代表將i和j初始化為0,如果沒有BEGIN語句,則處理每一行的時候i和j的值都會重置為0

14. 在第三行行尾新增;號

     sed -ie '3s/$/;/'

相關推薦

[]Shell

1. 字串如何大小寫轉換 str="This is a Bash Shell script." 1> tr方式      newstr=`tr '[A-Z]' '[a-z]' <<<"$str"`或者 newstr=$(echo $str |tr '[

[]Linux

在學習Linux過程中,有許多有用的小技巧。如果放在紙質的筆記本上,平時查閱會相當不方便。現在以一種“碎碎念”的方式,彙集整理在此,目前還不是很多,但隨著學習、工作的深入,後續會陸陸續續新增更多的小技巧。 1. 配置ssh的等效性     ssh-copy-id -i /ro

項目管理系列之一:幹系人管理

關系 mbo ans con lock iar odi 所在 alt 初次見到“項目幹系人”這個詞,我是有點蒙圈的,因為這不太符合中文平時的表達。 其實所謂“項目幹系人”,英文稱作“Project Stakeholder”,翻譯成利益相關者,對其含義就一目了然

ava 自己 來講 ont 保存 。。 朋友 的人 無用功 我想我應該停下來,總結一下這開學兩個月半以來,自己所經歷的事情和我所有的心情。以前的時候心情不好的時候就會發在微博上,因為感覺微博上自己認識的身邊的人很少,我可以毫無忌憚的發泄自己的情緒,或者說是對一些人掩蓋一下糟

CAP

cluster 請求響應 watermark ear mar 部署 doc 性能 生成報表 整個2017年都在搞大數據平臺,完全遠離了機器學習,甚至都不記得寫過類似ETL的job。 從數據到平臺,從業務處理到基礎服務。 Metrics的收集,報警,生成報表。Data pip

一個十二年老程序猿的h5牛牛程序出售

存儲 自然 第一個 進修 為我 計劃 朋友 不知道 acl 我是一名程序猿,在上95年上初中的時候h5牛牛程序出售(http://h5.hxforum.com) 聯系方式170618633533企鵝2952777280 源碼出售 房卡出售 後臺出租有意者私聊扣扣,別的還在

2018第一篇

繼續 技術文章 能說 很多 leader 沒有 要花 註冊 一次 不知不覺博客園都註冊了3年多了,但實際做技術並沒有這麽久。 2016年大三下學期,老師的推薦意外在武漢接觸到前端,現在想起來我還是我們班上最早接觸到前端的人,而如今一晃,轉眼間接觸前端也算2

crawler5 豆瓣爬取操作之登錄練習

保存 網頁 utf 程序 val with open 平臺 xxxxxxxx edi import requests import html5lib import re from bs4 import BeautifulSoup s = requests.Sess

201808

  換了三家公司,到了一家半,人生咋個這麼艱辛。 入職的第二週,很充實。第一週,爬蟲看的我七葷八素,不過至少反爬蟲不是很犀利的網站資料都可以嘗試爬一下吧。這麼剛剛還把證監會上面銀行的資料爬了下來。   這樣的充實很難說是一種自我滿足,畢竟做的事情和我之前的有差距,和我的興趣有偏離。但

crawler6 豆瓣爬取操作之獲取資料

import requests from lxml import etree   s = requests.Session() for id in range(0,251,25):   url ='https://movie.douban.com/top250/?start-'+str(i

2017/2/13的

從開始工作到現在,已經過去了一年半,近期想轉行,遂記下這一年半的時間裡的各種碎碎。 說實話一年半里專業水平在專案中提升不是很多,由於業務強烈依賴高通,好多內容對新手來說不是很容易上手,摻雜了很多底層知識。公司裡的培訓相對又較少,造成自己對業務無法形成系統性的認知,也基本沒有

資料的範圍

實際上該篇文章的定位還是蠻高的,就像計算機網路中的特殊地址一樣,是不是幾乎每年必考?在計算機組成這門課裡,資料的範圍通常會以小題的形式考察,但不排除例外,2017年408真題簡直重新整理了我的三觀,原來資料如此有趣!這是2019年,表示考408的我有點惶恐。。 首先,我覺得有必要說明幾個概念:

演算法提高 分分鐘的

問題描述   以前有個孩子,他分分鐘都在碎碎念。不過,他的念頭之間是有因果關係的。他會在本子裡記錄每一個念頭,並用箭頭畫出這個念頭的來源於之前的哪一個念頭。翻開這個本子,你一定會被互相穿梭的箭頭給攪暈

2018icpc南京站

    直接說結果吧,一題滾粗,全場倒數,相當悽慘。     時間軸拉遠一點,從選賽區開始說起吧。在八月初從camp回來時開始考慮選賽區,我的意見是有兩個站絕對不打——吉林和焦作,前者是因為太早,只有不到兩個月的準備時間,而自己還那麼菜,好多技能都沒點亮,去了不是送死嗎

DataTables-初始化一個常用的DataTables

ajax請求,動態分頁 $('#activity_statistics_list_table').DataTable( { lan

ACM 退役

恩,到今年所有東西寫的都還是ACM-ICPC 從去年開始,我們就一路踩線前進,一直到現在 不過一切都結束了 ---------------------------------- 記錄一下ACM的全過程吧 2016/1~2 ICPC Camp 當時和yjz csl組隊去打ICPC Camp,我熱身

日常——程式設計師的身體健康問題

       最近公司組織體檢,雖說可能是不太嚴謹的,但是基本的身體問題也是可以看出來的。聯絡到最近的事件,真的感覺生命很重要,要珍惜眼前的點點滴滴,熱愛生命。程式設計師這個工作就是高薪且普遍加班,很少運動,導致身體健康問題的出現甚至是猝死事件的發生。每每看到這些事情,都會告

android eMMC【轉】

本文轉載自:https://blog.csdn.net/Fybon/article/details/44242549 一、/dev/block[email protected]:/dev/block #lsbootdevicemmcblk0mmcblk0p1mmcblk0p10…….mmcblk0

圖解前的

  圖解前的碎碎念:  昨夜吃餃子蘸醋,俄然就想起了這部電影來(沒錯樓主就是這麼重口味+善於聯想),所以說解就解沒商量~  老規矩,仍是提幾點要求先:  一、歡迎友善交流討論,槓精和“專心潑冷水一百年”黨、“除了挑劇情BUG外啥都不會”黨、“站著說話不腰疼”黨以及“留言只會用反問句和質疑口吻”黨請主動退散,(

Google系統管理員的技巧分享與

本文是Google系統管理員Tom Limoncelli在其個人部落格上總結的一些零碎的工作心得技巧和碎碎念(其實整篇文章就是個碎碎念集合)。內容比較雜,希望對你有所啟發!以下為全文翻譯: ◆在Mac中,如果按住Shift並單擊視窗上的綠色圓點,則實現了該視窗最大化功能,即代替了應用程式預設的操作。