日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

《Shell脚本学习指南》第四章 文本处理工具

發布時間:2025/4/5 编程问答 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《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

轉載于:https://www.cnblogs.com/xiaomaohai/archive/2012/02/11/6157869.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的《Shell脚本学习指南》第四章 文本处理工具的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。