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

第 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.5. Built-in Functions
7.3.5.1. length
7.3.6. 过滤相同的行
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. perl
7.5. CURL - transfer a URL
7.5.1. 基本用法
7.5.2. data
7.5.3. connect-timeout
7.5.4. max-time
7.5.5. compressed
7.5.6. vhosts
7.5.7. -w, --write-out <format> 输出格式定义
7.5.8. -A/--user-agent <agent string>
7.5.9. referer
7.5.10. -v
7.5.11. -o, --output FILE Write output to <file> instead of stdout
7.5.12. -H/--header <line> Custom header to pass to server (H)
7.5.12.1. Last-Modified / If-Modified-Since
7.5.12.2. ETag / If-None-Match
7.5.12.3. Accept-Encoding:gzip,defalte
7.5.12.4. HOST
7.5.12.5. HTTP 认证
7.5.13. curl-config
7.5.14. 指定网络接口或者地址
7.5.15. Cookie 处理
7.5.16. RestFul 应用 JSON 数据处理
7.5.17. 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 - retrieves files from the web
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.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. parallel - build and execute shell command lines from standard input in parallel

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