shell指令碼 續

2021-08-22 00:23:01 字數 2226 閱讀 5074

工具使用。

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...