文档编辑
一、ed
二、ex
三、tr
四、wc
五、col
六、fmt
七、jed
八、joe
九、let
十、sed
Linux sed
是利用脚本来处理文本文件。sed
可依照脚本的指令来处理、编辑文本文件。Sed
主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
语法
sed [-hnV][-e<script>][-f<script文件>][文本文件]
参数
-
-e<script>或--expression=<script>
: 以选项中指定的script
来处理输入的文本文件。 -
-f<script文件>或--file=<script文件>
: 以选项中指定的script
文件来处理输入的文本文件。 -
-h或--help
: 显示帮助。 -
-n或--quiet或--silent
: 仅显示script
处理后的结果。 -
-V或--version
: 显示版本信息。
动作
-
a
: 新增,a
的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~ -
c
: 取代,c
的后面可以接字串,这些字串可以取代n1
,n2
之间的行! -
d
: 删除,因为是删除啊,所以d
后面通常不接任何东东; -
i
: 插入,i
的后面可以接字串,而这些字串会在新的一行出现(目前的上一行); -
p
: 打印,亦即将某个选择的数据印出。通常p
会与参数sed -n
一起运行~ -
s
: 取代,可以直接进行取代的工作哩!通常这个s
的动作可以搭配正则表达式!例如1,20s/old/new/g
就是啦!
11.1 sed -i 备份文件 "s/xxx/yyy/g" 目标文件
sed -i 备份文件 "s/xxx/xxx/g" 目标文件
将目标文件中的 xxx
全局替换为 yyy
, 并支持备份。如下所示:
sed -i a.history.txt "s/bcd.com/bbb.com/g" a.txt
将 a.txt
中的 bcd.com
全局替换为 bbb.com
, 并将原来的备份到 a.history.txt
。
十一、comm
十二、expr
十三、fold
十四、grep
Linux grep (global regular expression)
命令用于查找文件里符合条件的字符串或正则表达式。
grep
指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep
指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -
,则 grep
指令会从标准输入设备读取数据。
14.1 语法
grep [options] pattern [files]
或
grep [-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]
-
pattern
- 表示要查找的字符串或正则表达式。 -
files
- 表示要查找的文件名,可以同时查找多个文件,如果省略files
参数,则默认从标准输入中读取数据。 -
-a
或--text
: 不要忽略二进制的数据。 -
-A<显示行数>
或--after-context=<显示行数>
: 除了显示符合范本样式的那一列之外,并显示该行之后的内容。 -
-b
或--byte-offset
: 在显示符合样式的那一行之前,标示出该行第一个字符的编号。 -
-B<显示行数>
或--before-context=<显示行数>
: 除了显示符合样式的那一行之外,并显示该行之前的内容。 -
-c
或--count
: 计算符合样式的列数。 -
-C<显示行数>
或--context=<显示行数>
或-<显示行数>
: 除了显示符合样式的那一行之外,并显示该行之前后的内容。 -
-d <动作>
或--directories=<动作>
: 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。 -
-e<范本样式>
或--regexp=<范本样式>
: 指定字符串做为查找文件内容的样式。 -
-E
或--extended-regexp
: 将样式为延伸的正则表达式来使用。 -
-f<规则文件>
或--file=<规则文件>
: 指定规则文件,其内容含有一个或多个规则样式,让grep
查找符合规则条件的文件内容,格式为每行一个规则样式。 -
-F
或--fixed-regexp
: 将样式视为固定字符串的列表。 -
-G
或--basic-regexp
: 将样式视为普通的表示法来使用。 -
-h
或--no-filename
: 在显示符合样式的那一行之前,不标示该行所属的文件名称。 -
-H
或--with-filename
: 在显示符合样式的那一行之前,表示该行所属的文件名称。 -
-i
或--ignore-case
: 忽略字符大小写的差别。 -
-l
或--file-with-matches
: 列出文件内容符合指定的样式的文件名称。 -
-L
或--files-without-match
: 列出文件内容不符合指定的样式的文件名称。 -
-n
或--line-number
: 在显示符合样式的那一行之前,标示出该行的列数编号。 -
-o
或--only-matching
: 只显示匹配PATTERN
部分。 -
-q
或--quiet或--silent
: 不显示任何信息。 -
-r
或--recursive
: 此参数的效果和指定-d recurse
参数相同。 -
-s
或--no-messages
: 不显示错误信息。 -
-v
或--invert-match
: 显示不包含匹配文本的所有行。 -
-V
或--version
: 显示版本信息。 -
-w
或--word-regexp
: 只显示全字符合的列。 -
-x --line-regexp
: 只显示全列符合的列。 -
-y
: 此参数的效果和指定-i
参数相同。
14.2 grep hello file.txt
grep hello file.txt
在文件 file.txt
中查找字符串 hello
,并打印匹配的行
14.3 grep -r hello dir/
grep -r hello dir/
在文件夹 dir
中递归查找所有文件中匹配 hello
的行
14.4 grep "^start.*end$" file.txt
grep "^start.*end$" file.txt
查找以 start
开头、以 end
结尾的行