Home | 簡體中文 | 繁體中文 | 雜文 | 知乎專欄 | Github | OSChina 博客 | 雲社區 | 雲棲社區 | Facebook | Linkedin | 視頻教程 | 打賞(Donations) | About

第 7 章 Utility Programs

目錄

7.1. ed, red - text editor
7.2. vim
7.2.1. 查找與替換
7.2.2. 插入檔案
7.2.3. 批處理
7.2.3.1. vi 批處理
7.2.4. line()
7.2.5. set fileformat
7.3. awk
7.3.1. 處理列
7.3.2. printf
7.3.3. Pattern(字元匹配)
7.3.3.1. Pattern, Pattern
7.3.4. Built-in Variables (NR/NF)
7.3.4.1. NR
7.3.4.2. NF
7.3.4.3. 練習
7.3.4.3.1. 使用 ss 命令統計 TCP 狀態
7.3.4.3.2. TCP/IP Status
7.3.4.3.3. 用戶shell統計
7.3.4.3.4. access.log POST與GET統計
7.3.5. Built-in Functions
7.3.5.1. length
7.3.5.2. toupper() 轉為大寫字母
7.3.5.3. tolower() 轉為小寫字母
7.3.5.4. rand() 隨機數生成
7.3.6. 過濾相同的行
7.3.7. 數組演示
7.4. sed
7.4.1. 查找與替換
7.4.1.1. 正則
7.4.1.2. aaa="bbb" 提取bbb
7.4.1.3. 首字母大寫
7.4.2. insert 插入字元
7.4.3. 追加字元
7.4.4. 修改字元
7.4.5. 刪除字元
7.4.5.1. delete
7.4.6. 行操作
7.4.7. 編輯檔案
7.4.8. 正則表達式
7.4.9. 管道操作
7.4.10. 字母大小寫轉換
7.4.11. perl
7.5. CURL - transfer a URL
7.5.1. 基本用法
7.5.2. 提交表單數據
7.5.3. 上傳檔案
7.5.4. connect-timeout
7.5.5. max-time
7.5.6. compressed
7.5.7. vhosts
7.5.8. -w, --write-out <format> 輸出格式定義
7.5.9. -A/--user-agent <agent string>
7.5.10. referer
7.5.11. -v
7.5.12. -o, --output FILE Write output to <file> instead of stdout
7.5.13. -L, --location
7.5.14. -H/--header <line> Custom header to pass to server (H)
7.5.14.1. Last-Modified / If-Modified-Since
7.5.14.2. ETag / If-None-Match
7.5.14.3. Accept-Encoding:gzip,defalte
7.5.14.4. HOST
7.5.14.5. HTTP 認證
7.5.14.6. Accept
7.5.14.7. Content-Type
7.5.15. curl-config
7.5.16. 指定網絡介面或者地址
7.5.17. Cookie 處理
7.5.18. Restful 應用 JSON 數據處理
7.5.18.1. Curl Oauth2
7.5.18.2. Curl + Oauth2 + Jwt
7.5.19. HTTP2
7.5.20. FAQ
7.6. expect
7.6.1. 模擬登錄 telnet 獲取Cisco配置
7.6.2. 模擬登錄 ssh
7.6.3. SCP
7.7. expect-lite - quick and easy command line automation tool
7.8. sshpass - noninteractive ssh password provider
7.9. Klish - Kommand Line Interface Shell (the fork of clish project)
7.9.1. 安裝Klish
7.9.2. 為用戶指定clish作為預設Shell
7.9.3. FAQ
7.9.3.1. clish/shell/shell_expat.c:36:19: fatal error: expat.h: No such file or directory
7.10. Limited command Shell (lshell)
7.11. Wget - The non-interactive network downloader.
7.11.1. Logging and input file
7.11.1.1. -i, --input-file=FILE download URLs found in local or external FILE.
7.11.2. 下載相關參數
7.11.2.1. -O, --output-document=FILE write documents to FILE 保存到檔案
7.11.3. HTTP options (HTTP 選項)
7.11.3.1. --post-data=STRING use the POST method; send STRING as the data.
7.11.3.2. header HTTP頭定義
7.11.4. Recursive download
7.11.4.1. -r, --recursive specify recursive download.
7.11.4.2. -m, --mirror shortcut for -N -r -l inf --no-remove-listing.
7.11.5. --no-passive-ftp disable the "passive" transfer mode.
7.11.6. 下載一組連續的檔案名
7.12. TUI
7.12.1. screen - screen manager with VT100/ANSI terminal emulation
7.12.2. tmux — terminal multiplexer
7.12.3. byobu - wrapper script for seeding a user's byobu configuration and launching a text based window manager (either screen or tmux)
7.12.4. htop - interactive process viewer
7.12.5. elinks
7.12.6. chat
7.13. jq - Command-line JSON processor
7.14. parallel - build and execute shell command lines from standard input in parallel
7.15. multitail

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