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