工具使用。
sort
預設是公升序,降序可用選項-r
-u 去除重複行
-n 以文字中的數字進行排序
-t 指定分隔符
uniq
-u 只顯示不重複的行
-c 計數
-d 只顯示重複的行
paste
拼接兩個檔案
-d 後面跟分隔符,將兩個檔案中的內容用分隔符隔開
-s 將每個檔案的內容合併成一行
cut
-b 以位元組為單位進行切割,(linux下乙個漢字三個位元組)
-c 以字元為單位進行切割
-d 指定分隔符
xargs
產生某個指令的引數
擅長將標準輸入的東西轉化為命令列引數,將單行或多行的文字轉換為其他格式。
它是構建單行命令的重要元件之一
-n 指定列數,並多行輸出
-d 指定域分隔符,將特定列打散,按指定格式輸出
// 表示以#為分隔符,並以三列輸出
virtual-machine:shellstudy$ cat file
aaabbb
cccvirtual-machine:echo "a#b#c#" | xargs -d# -n3
a b c
-i
-i
virtual-machine:cat file | xargs -i {} ./abc.sh 1 {} 2
1 aaa 2
1 bbb 2
1 ccc 2
-virtual-machine:shellstudy$ cat abc.sh
#!/bin/bash
echo $@
用xargs批量刪除檔案
-print0 將檔案中的空格替換為null,再使用rm進行刪除
sed
作為文字處理工具,本身是乙個管道命令
把當前處理的行儲存在乙個緩衝區,這個區叫做模式空間,在該空間內對文字進行處理,然後將處理完成的文字傳送到螢幕上,再接著處理下一行,直到檔案末尾。
預設是由基本正則匹配
//將以a開頭以a結尾的行列印出來,注意,+要進行轉義,否則無法識別
virtual-machine:shellstudy$ sed '/^a\+$/p' file
aaaaaa
bbbccc
//加上-n之後,不顯示原來的行,只顯示匹配的行
virtual-machine:shellstudy$ sed '/^a\+$/p' -n file
aaa
//將匹配的行進行刪除
virtual-machine:shellstudy$ sed '/^a\+$/d' file
bbbccc
virtual-machine:shellstudy$ sed '/^c\+$/d' file
aaabbb
virtual-machine:shellstudy$ cat file
aaabbb
ccc
由上可以知道對於sed來說預設修改是不修改原始檔的,如果要修改原始檔需要加上-i選項
virtual-machine:shellstudy$ sed '/^a\+$/d' file -i
virtual-machine:shellstudy$ cat file
bbbccc
//將匹配到的進行替換,將a替換成b,在末尾加上g進行全文替換
virtual-machine:shellstudy$ sed '/^a\+$/s/a/b/' file
baabbb
cccvirtual-machine:shellstudy$ sed '/^a\+$/s/a/b/g' file
bbbbbb
ccc
定址:區間化輸出
//表示匹配第二行並輸出
virtual-machine:shellstudy$ sed '2p' file
aaabbb
bbbccc
//表示匹配第二三行並輸出
virtual-machine:shellstudy$ sed '2,3p' file -n
bbbccc
shell程式設計(續)
以及 注 凡是不會的命令都用man 去查 例如 man test man echo 基本資料型別運算 shell中主要是整數運算和浮點書 小數 運算,整數運算兩種方式 expr命令和 實現 num1 expr 10 3 將計算結果賦值給變數 num2 expr 10 3 將計算結果賦值給變數expr...
Shell指令碼(三) Shell指令碼入門
1 指令碼格式 指令碼以 bin bash開頭 指定解析器 2 第乙個shell指令碼 helloworld 1 需求 建立乙個shell指令碼,輸出helloworld 2 案例實操 atguigu hadoop101 datas touch helloworld.sh atguigu hadoo...
Shell指令碼和shell
1.shell script,shell指令碼與windows dos下的批處理相似,也就是用各類命令預先放入到乙個檔案中,方便一次性執行的乙個程式檔案,主要是方便管理員進行設定或者管理用的。但是它比windows下的批處理更強大,比用其他程式設計程式編輯的程式效率更高,畢竟它使用了linux un...