Home | 簡體中文 | 繁體中文 | 雜文 | 知乎專欄 | Github | OSChina 博客 | 雲社區 | 雲棲社區 | Facebook | Linkedin | 視頻教程 | 打賞(Donations) | About
知乎專欄多維度架構 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者”

第 28 章 Utility Programs

目錄

28.1. ed, red - text editor
28.2. vim
28.2.1. 查找與替換
28.2.2. 插入檔案
28.2.3. 批處理
28.2.3.1. vi 批處理
28.2.4. line()
28.2.5. set fileformat
28.3. awk
28.3.1. 處理列
28.3.2. printf
28.3.3. Pattern(字元匹配)
28.3.3.1. Pattern, Pattern
28.3.4. Built-in Variables (NR/NF)
28.3.4.1. NR
28.3.4.2. NF
28.3.4.3. 練習
28.3.4.3.1. 使用 ss 命令統計 TCP 狀態
28.3.4.3.2. TCP/IP Status
28.3.4.3.3. 用戶shell統計
28.3.4.3.4. access.log POST與GET統計
28.3.5. Built-in Functions
28.3.5.1. length
28.3.5.2. toupper() 轉為大寫字母
28.3.5.3. tolower() 轉為小寫字母
28.3.5.4. rand() 隨機數生成
28.3.6. 過濾相同的行
28.3.7. 數組演示
28.4. sed
28.4.1. 查找與替換
28.4.1.1. 正則
28.4.1.2. aaa="bbb" 提取bbb
28.4.1.3. 首字母大寫
28.4.2. insert 插入字元
28.4.3. 追加字元
28.4.4. 修改字元
28.4.5. 刪除字元
28.4.5.1. delete
28.4.6. 行操作
28.4.7. 編輯檔案
28.4.8. 正則表達式
28.4.9. 管道操作
28.4.10. 字母大小寫轉換
28.4.11. perl
28.5. CURL - transfer a URL
28.5.1. 基本用法
28.5.2. 提交表單數據
28.5.3. 上傳檔案
28.5.4. connect-timeout
28.5.5. max-time
28.5.6. compressed
28.5.7. vhosts
28.5.8. -w, --write-out <format> 輸出格式定義
28.5.9. -A/--user-agent <agent string>
28.5.10. referer
28.5.11. -v
28.5.12. -o, --output FILE Write output to <file> instead of stdout
28.5.13. -L, --location
28.5.14. -H/--header <line> Custom header to pass to server (H)
28.5.14.1. Last-Modified / If-Modified-Since
28.5.14.2. ETag / If-None-Match
28.5.14.3. Accept-Encoding:gzip,defalte
28.5.14.4. HOST
28.5.14.5. HTTP 認證
28.5.14.6. Accept
28.5.14.7. Content-Type
28.5.15. curl-config
28.5.16. 指定網絡介面或者地址
28.5.17. Cookie 處理
28.5.18. Restful 應用 JSON 數據處理
28.5.18.1. Curl Oauth2
28.5.18.2. Curl + Oauth2 + Jwt
28.5.19. 訪問自簽名證書
28.5.20. HTTP2
28.5.21. FAQ
28.6. expect
28.6.1. 模擬登錄 telnet 獲取Cisco配置
28.6.2. 模擬登錄 ssh
28.6.3. SCP
28.6.4. openssl 例子
28.7. expect-lite - quick and easy command line automation tool
28.8. sshpass - noninteractive ssh password provider
28.9. Klish - Kommand Line Interface Shell (the fork of clish project)
28.9.1. 安裝Klish
28.9.2. 為用戶指定clish作為預設Shell
28.9.3. FAQ
28.9.3.1. clish/shell/shell_expat.c:36:19: fatal error: expat.h: No such file or directory
28.10. Limited command Shell (lshell)
28.11. Wget - The non-interactive network downloader.
28.11.1. Logging and input file
28.11.1.1. -i, --input-file=FILE download URLs found in local or external FILE.
28.11.2. 下載相關參數
28.11.2.1. -O, --output-document=FILE write documents to FILE 保存到檔案
28.11.3. HTTP options (HTTP 選項)
28.11.3.1. --post-data=STRING use the POST method; send STRING as the data.
28.11.3.2. header HTTP頭定義
28.11.4. Recursive download
28.11.4.1. -r, --recursive specify recursive download.
28.11.4.2. -m, --mirror shortcut for -N -r -l inf --no-remove-listing.
28.11.5. --no-passive-ftp disable the "passive" transfer mode.
28.11.6. 下載一組連續的檔案名
28.12. TUI
28.12.1. screen - screen manager with VT100/ANSI terminal emulation
28.12.2. tmux — terminal multiplexer
28.12.3. byobu - wrapper script for seeding a user's byobu configuration and launching a text based window manager (either screen or tmux)
28.12.4. htop - interactive process viewer
28.12.5. elinks
28.12.6. chat
28.13. jq - Command-line JSON processor
28.14. parallel - build and execute shell command lines from standard input in parallel
28.15. multitail

28.1. ed, red - text editor

行定址

	
.	此選項對當前行定址(預設地址)。
number	此選項對第 number 行定址。可以按逗號分隔的範圍 (first,last) 對行定址。0 代表緩衝區的開頭(第一行之前)。
-number	此選項對當前行之前的第 number 行定址。如果沒有 number,則減號對緊跟在當前行之前的行定址。
+number	此選項對當前行之後的第 number 行定址。如果沒有 number,則加號對緊跟在當前行之後的行定址。
$	此選項對最後一行定址。
,	此選項對第一至最後一行定址,包括第一行和最後一行(與 1,$ 相同)。
;	此選項對當前行至最後一行定址。
/pattern/	此選項對下一個包含與 pattern 匹配的文本的行定址。
?pattern?	此選項對上一個包含與 pattern 匹配的文本的行定址。	
	
	

命令描述

	
a	此命令在指定的地址之後追加文本。
c	此命令將指定的地址更改為給定的文本。
d	此命令刪除指定地址處的行。
i	此命令在指定的地址之前插入文本。
q	此命令在將緩衝區保存到磁碟後終止程序並退出。
r file	此命令讀取 filespec 的內容並將其插入指定的地址之後。
s/pattern/replacement/	此命令將匹配 pattern 的文本替換為指定地址中的 replacement 文本。
w file	此命令將指定的地址寫到 file。如果沒有 address,則此命令預設使用整個緩衝區。
	
	

實例,刪除passwd中的neo用戶

	
ed -s passwd <<EOF
/neo/
d
wq
EOF
	
	
	
ed -s mfsmetalogger.cfg <<EOF
,s/^# //
wq
EOF		
	
	

刪除尾隨空格

	
$ cat -vet input.txt

This line has trailing blanks.    $
This line does not.$

$ (echo ',s/ *$//'; echo 'wq') | ed -s input.txt

$ cat -vet input.txt

This line has trailing blanks.$
This line does not.$