中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Shell腳本如何實現文本處理

發布時間:2021-10-13 11:27:15 來源:億速云 閱讀:137 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關Shell腳本如何實現文本處理的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

4.1 排序文本

4.1.1 行的排序
未提供命令行選項時,整個記錄會根據當前locale所定義的次序排序。
在傳統的C locale中,也就是ASCII順序。

4.1.2 以字段排序
-k選項的后面接著的是一個字段編號,或者是一對數字。
每個編號后面都可以接一個點號的字符位置,或修飾符字母。

如果僅指定一個字段編號,則排序鍵值會自該字段的起始處開始,
一直繼續到記錄的結尾(而非字段的結尾)。

如果給的是一對用逗號隔開的字段數字,則排序鍵值將由第一個字段值的起始處開始,
結束于第二個字段值的結尾。使用點號表示字符位置。
-k2.4, 5.6指的是從第二個字段的第四個字符開始比較,一直比到第五個字段的第六個字符。
$ sort -t: -k1,1 /etc/passwd     以用戶名稱排序
bin:x:1:1:bin:/bin:/sbin/nologin
chico:x:12501:1000:Chico Marx:/home/chico:/bin/bash
harpo:x:12502:1000:Harpo Marx:/home/harpo:/bin/ksh
...

$ sort -t: -k3,3nr /etc/passwd     反省UID排序
或-k3nr,3或-k3,3 -n -r都可以。

4.1.3 文本塊的排序
有時需要對多行記錄組合而成的數據排序。以地址清單為例:
$ cat my-friends
# SORTKEY: Schlo, Hans Jurgen
Hans Jurgen Schlo
Unter den Linden 78
D-10117 Berlin
Germany

# SORTKEY: Jones, Adrian
...

技巧是:利用awk識別段落間隔,在每個地址內暫時使用一個未用過的字符取代分行。
sort看到的行就會變成這樣:
# SORTKEY: Schlo, Hans Jurgen^ZHans Jurgen Schlo^ZUnter den Linden 78^Z...
cat my-friends |               讀取地址文件
     awk -v RS=" " '{ gsub("\n", "^Z"); print }' |    轉換地址為單行
          sort -f |           排序地址數據,忽略大小寫
               awk -v ORS="\n\n" '{ gsub("^Z", "\n"); print }' |  恢復行結構
                    grep -v '# SORTKEY'   刪除標記行
1. 函數gsub()為全局性替換(global substitution),類似sed下的s/x/y/g結構。
2. RS變量時輸入數據的記錄分隔器(Record Separator)。
   通常輸入數據以換行隔開,使每行成為單個記錄。
    RS=" "是一個特殊用法,指的是記錄以空行隔開。
3. ORS是輸出記錄分隔器。
注:'{ action }'是對每個字段的操作,而RS,ORS都是對記錄的設定。

4.1.5 sort的穩定性
sort并不穩定。

4.2 刪除重復
sort -u是依據匹配的鍵值進行消除操作,而非匹配的記錄。
uniq有3個好用選項:
     -c在每個輸出行之前加上該行重復的次數。
     -d則用于僅顯示重復的行。
     -u僅顯示未重復的行。

4.3 重新格式化段落
fwt -w 30

4.4 計算行數、字數以及字符數
wc的默認輸出是一行報告,包括行數、字數以及字節數。
可用選項:-c(字節數)、-l(行數)、-w(字數)。

代碼如下:


$ echo Testing one two three | wc -c
1 4 22
$ wc /etc/passwd /etc/group



4.6 提取開頭或結尾數行
顯示文件列表中每一個的前n條記錄:
head -n n [file(s)]
head -n [file(s)]
awk 'FNR <= n' [file(s)]
sed -e nq [file(s)]
sed nq [file(s)]

觀察不斷增長的系統信息日志,Ctrl-C停止tail。

代碼如下:


$ tail -n 25 -f /var/log/messages

感謝各位的閱讀!關于“Shell腳本如何實現文本處理”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

连城县| 九龙城区| 黄骅市| 正定县| 乌苏市| 玛曲县| 山西省| 通化县| 新和县| 文山县| 旌德县| 新龙县| 嘉善县| 连平县| 都昌县| 称多县| 武宁县| 麻城市| 息烽县| 莱芜市| 兴安县| 垫江县| 广南县| 安多县| 筠连县| 易门县| 阳江市| 滨海县| 延吉市| 泉州市| 禹州市| 五原县| 张家川| 江口县| 安龙县| 石狮市| 阳城县| 泗水县| 基隆市| 石阡县| 奎屯市|