1. 程式人生 > 其它 >Linux基本命令 和 Regex 正則表示式

Linux基本命令 和 Regex 正則表示式

Linux基本命令 和 Regex 正則表示式

Regex

基本語法

常用匹配規則

[aeiouAEIOU]			# 從中隨機選擇一個
[0-9]{4}		        # 從中選擇4個
.*				# 匹配任意字元
\w				# 匹配單詞
\d				# 匹配數字
^abc				# 以abc為開始
^(abc)				# 以abc為開頭
[^abc]				# 不包含abc
abc$				# 以abc為結尾
'|'				# 匹配內容裡|表示或者
+				# 至少匹配1個
?			        # 至少匹配0個
()				# 同傳統意義上的括號

參考連結

  1. 線上測試及用例參考:
    http://c.runoob.com/front-end/854

shell

1. grep

使用說明:

grep 命令用於查詢檔案裡符合條件的字串。

grep 指令用於查詢內容包含指定的範本樣式的檔案,如果發現某檔案的內容符合所指定的範本樣式,預設 grep 指令會把含有範本樣式的那一列顯示出來。

2. cut

使用說明:

cut 命令從檔案的每一行剪下位元組、字元和欄位並將這些位元組、字元和欄位寫至標準輸出。
如果不指定 File 引數,cut 命令將讀取標準輸入。必須指定 -b、-c 或 -f 標誌之一。

引數:
  • -d: 自定義分隔符,預設為製表符。
  • -f: 與-d一起使用,指定顯示哪個區域。
  • -c: 以字元為單位進行分割。
  • -b: 以位元組為單位進行分割。這些位元組位置將忽略多位元組字元邊界,除非也指定了 -n 標誌。
  • -n: 取消分割多位元組字元。僅和 -b 標誌一起使用。如果字元的最後一個位元組落在由 -b 標誌的 List 引數指示的範圍之內,該字元將被寫出;否則,該字元將被排除
例項:

test3:

```
cut -d '|' -f 2-3 | sort| uniq | cut -d ' ' -f 2 | cut -d ' ' -f 3 | sort | uniq -c | sort | tr -s ' '| cut -d ' ' -f 3 | tail -n 1
```

3. uniq

使用說明:

uniq 命令用於檢查及刪除文字檔案中重複出現的行列,一般與 sort 命令結合使用。sort | uniq 先排序再刪除,因為它只刪除相鄰的重複的列。

引數:
  • -c: 在每列旁邊顯示該行重複出現的次數。
  • -d或--repeated: 僅顯示重複出現的行列。
  • -u或--unique 僅顯示出一次的行列。
  • -f<欄位>或--skip-fields=<欄位> 忽略比較指定的欄位。
  • -s<字元位置>或--skip-chars=<字元位置> 忽略比較指定的字元。
  • -w<字元位置>或--check-chars=<字元位置> 指定要比較的字元。
例項:
  1. test3:
    cut -d '|' -f 2-3 | sort| uniq | cut -d ' ' -f 2 | cut -d ' ' -f 3 | sort | uniq -c | sort | tr -s ' '| cut -d ' ' -f 3 | tail -n 1
    

4. sort

sort用法(單獨使用為按字母順序排序)

-n或-nr     # 按數字大小進行排序
-r          # 反向排序
-u          # 排序結果去掉重複項

與unqic一起使用

sort aim.txt | unqic -c | sort -n      # unic去重,-c顯示重複行數量

5. diff

比較兩個檔案是否相同

diff file1 file2 >dev/null 2>&1		        # 比較結果不輸出到螢幕

if  [ "$?" == "0" ];then			# $?是對比結果返回值
    echo "the file or dir is same!"
else 
     echo "the file or dir is different!"
fi

6. basename

name=`basename /tmp/test/file.txt`   			# 輸出為file.txt
name1=`basename /tmp/test/file.txt .txt`		# 輸出為file

7. convert

convert "a.jpg" "a.png"		           # 將jpg圖片轉換為png

8. read

read address                 #讀取外界輸入並將其值賦給address
echo $address

9. cp

cp file1 file2               # 將file1複製成file2
cp -p                        # 保留原始檔各種資訊及屬性

10. mv

mv aaa bbb                   # 將檔名aaa改為bbb
mv aaa info                  # 將檔案移動到info/資料夾

11. display

display shell.png           # 開啟一張圖片

12. wc

wc < aim.txt
-l        # 只顯示行數
-w        # 只顯示字數

13. tail head

tail -1     #顯示最後一行

14. tr

tr 命令用於轉換刪除檔案中的字元。
tr指令從標準輸入裝置讀取資料,經過字串轉譯後,將結果輸出到標準輸出裝置。

tr [OPTION] SET1 [SET2]
-s     # 替換重複的字元 用SET1指定的字元來替換對應的重複字元
-d     # 刪除字元 刪除SET1中指定的所有字元,不轉換(delete characters in SET1, do not translate)
-t     # 字元替換 將SET1中字元用SET2對應位置的字元進行替換,一般預設為-t
-c     # 字元補集替換 用SET2替換SET1中沒有包含的字元

例子:

tr '0123456789' '<<<<<5>>>>'            # 將0-9轉換按規則為後面

15. sed

sed 流編輯器
不必被sed複雜的概念所迷惑,sed就是用來 把一個字串中的某部分更改為其他字元的一種工具

#sed s///g                         # 此為主要用法,s/1/2/g意為將所有匹配到的1換為2
# 例子(匹配裡最好不要用+,可以用*)    # 輸入123abc123
  
cat line.txt | sed 's/[0-9]*//g'           #得到abc123
cat line.txt | sed 's/[a-z]//g'            #得到123123
cat line.txt | sed 's/[0-9]*$//g'          #得到123abc
cat line.txt | sed 's/[0-9]*[a-z]//g'      #得到123(刪123abc)
cat line.txt | sed 's/[a-z][0-9]*//g'      #得到123(刪abc123)