Home | 简体中文 | 繁体中文 | 杂文 | 打赏(Donations) | ITEYE 博客 | OSChina 博客 | Facebook | Linkedin | 知乎专栏 | Search | Email

第 29 章 Utility Programs

目录

29.1. ed, red - text editor
29.2. vim
29.2.1. 查找与替换
29.2.2. 插入文件
29.2.3. 批处理
29.2.3.1. vi 批处理
29.2.4. line()
29.2.5. set fileformat
29.3. awk
29.3.1. 处理列
29.3.2. printf
29.3.3. Pattern(字符匹配)
29.3.3.1. Pattern, Pattern
29.3.4. Built-in Variables (NR/NF)
29.3.4.1. NR
29.3.4.2. NF
29.3.4.3. 练习
29.3.4.3.1. 使用 ss 命令统计 TCP 状态
29.3.4.3.2. TCP/IP Status
29.3.4.3.3. 用户shell统计
29.3.4.3.4. access.log POST与GET统计
29.3.5. Built-in Functions
29.3.5.1. length
29.3.6. 过滤相同的行
29.4. sed
29.4.1. 查找与替换
29.4.1.1. 正则
29.4.1.2. aaa="bbb" 提取bbb
29.4.1.3. 首字母大写
29.4.2. insert 插入字符
29.4.3. 追加字符
29.4.4. 修改字符
29.4.5. 删除字符
29.4.5.1. delete
29.4.6. 行操作
29.4.7. 编辑文件
29.4.8. 正则表达式
29.4.9. 管道操作
29.4.10. perl
29.5. CURL - transfer a URL
29.5.1. 基本用法
29.5.2. data
29.5.3. connect-timeout
29.5.4. max-time
29.5.5. compressed
29.5.6. vhosts
29.5.7. -w, --write-out <format> 输出格式定义
29.5.8. -A/--user-agent <agent string>
29.5.9. referer
29.5.10. -v
29.5.11. -o, --output FILE Write output to <file> instead of stdout
29.5.12. -H/--header <line> Custom header to pass to server (H)
29.5.12.1. Last-Modified / If-Modified-Since
29.5.12.2. ETag / If-None-Match
29.5.12.3. Accept-Encoding:gzip,defalte
29.5.12.4. HOST
29.5.12.5. HTTP 认证
29.5.13. curl-config
29.5.14. 指定网络接口或者地址
29.5.15. Cookie 处理
29.5.16. RestFul 应用 JSON 数据处理
29.5.17. FAQ
29.6. expect
29.6.1. 模拟登录 telnet 获取Cisco配置
29.6.2. 模拟登录 ssh
29.6.3. SCP
29.7. expect-lite - quick and easy command line automation tool
29.8. sshpass - noninteractive ssh password provider
29.9. Klish - Kommand Line Interface Shell (the fork of clish project)
29.9.1. 安装Klish
29.9.2. 为用户指定clish作为默认Shell
29.9.3. FAQ
29.9.3.1. clish/shell/shell_expat.c:36:19: fatal error: expat.h: No such file or directory
29.10. Limited command Shell (lshell)
29.11. wget - retrieves files from the web
29.11.1. Logging and input file
29.11.1.1. -i, --input-file=FILE download URLs found in local or external FILE.
29.11.2. 下载相关参数
29.11.2.1. -O, --output-document=FILE write documents to FILE 保存到文件
29.11.3. HTTP options (HTTP 选项)
29.11.3.1. --post-data=STRING use the POST method; send STRING as the data.
29.11.3.2. header HTTP头定义
29.11.4. Recursive download
29.11.4.1. -r, --recursive specify recursive download.
29.11.4.2. -m, --mirror shortcut for -N -r -l inf --no-remove-listing.
29.11.5. --no-passive-ftp disable the "passive" transfer mode.
29.12. TUI
29.12.1. screen - screen manager with VT100/ANSI terminal emulation
29.12.2. tmux — terminal multiplexer
29.12.3. byobu - wrapper script for seeding a user's byobu configuration and launching a text based window manager (either screen or tmux)
29.12.4. htop - interactive process viewer
29.12.5. elinks
29.12.6. chat
29.13. parallel - build and execute shell command lines from standard input in parallel

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