使用sed命令用指令碼完成計數排序

2021-09-25 02:16:58 字數 1327 閱讀 6684

計數排序是指利用空間換時間,不進行交換的排序方法。

例如有乙個陣列 x ,想對他進行排序。

另外new乙個新的空間,叫做陣列y

拿出x中第乙個數字4, 統計有多少個比4小的,發現有3個,於是把4放在陣列y的第四個位置上。

首先,要排序的檔案叫testfile,目標檔案叫afterfile,也就是我們需要new乙個afterfile,所以叫用空間換時間。

[sroot@aaep7151 shell]# cat testfile

a:4b:5

c:1d:3

e:2字母後邊是序號,要按照正確的12345順序排列。

用指令碼setup.sh完成該功能。

用來排序的指令碼名字叫setup.sh

testfile=/home/craft/shell/testfile 設定絕對路徑

testcontent=cat testfile | awk -f ':' ''拿到第二列

for init in $testcontent;do 對testfile第二列的每乙個元素進行遍歷

temp0=$(grep $init $testfile |awk -f: 『』) 拿到每乙個第二列對應的第一

sed -i s/"$init"/"$temp0""$init"/g afterfile  這個地方,sed -i表示直接對檔案進行更改,sed s/要被替換的字元/新的字串/g 表示替換字元。

afterfile 裡已經標號了位置序號

以a:4舉例 , init=4,用sed指令,把a插到afterfile第init,列之後,也就是第四列後

同樣的把b查到第5列後,進行排序。

執行sed.sh的結果是

另外,這個功能用sort就可以實現

[sroot@aaep7151 shell]# sort +1 -2 -n -t : testfile

c:1e:2

d:3a:4

b:5

Shell 指令碼 Sed命令的使用

sed是乙個很好的檔案處理工具,本身是乙個管道命令,主要是以行為單位進行處理,可以將資料行進行替換 刪除 新增 選取等特定工作,下面先了解一下sed的用法 sed命令列格式為 sed nefri command 輸入文字 常用選項 n 使用安靜 silent 模式。在一般 sed 的用法中,所有來自...

Shell指令碼sed命令

1 p命令 命令p用於顯示模式空間的內容。預設情況下,sed把輸入行列印在螢幕上,選項 n用於取消預設的列印操作。當選項 n和命令p同時出現時,sed可列印選定的內容。例子 plain view plain copy 1 sed my p datafile 預設情況下,sed把所有輸入行都列印在標準...

sed命令使用

sed命令使用 常用選項 n 使用安靜模式,在一般情況所有的 stdin 都會輸出到螢幕上,加入 n 後只列印被 sed 特殊處理的行 e 多重編輯,且命令順序會影響結果 f 指定乙個 sed 指令碼檔案到命令列執行,r sed 使用擴充套件正則 i 直接修改文件讀取的內容,不在螢幕上輸出 sed操...