cut, paste, sed, tr简单用法
时间:2009-07-07 来源:BENNYSNAKE
cut命令用于将文件中的某个字段剪切下来
-cRANGE 将在RANGE中指定的字符剪切掉
-dCHARACTER 指定字段定界符为CHARACTER
-fRANGE 将RANGE中的字段剪切掉
bigfish@wangyu-desktop:tmp $ cat test1.txt
AAAAA: EEEEE
BBBBB: FFFFF
CCCCC: GGGGG
DDDDD: HHHHH
剪切每行的第一个字符
bigfish@wangyu-desktop:tmp $ cut -c1 test1.txt
A
B
C
D
剪切每行的1-3和5-8个字符
bigfish@wangyu-desktop:tmp $ cut -c1-3,5-8 test1.txt
AAAA: E
BBBB: F
CCCC: G
DDDD: H
将每行的第二个字段切掉,字段分割符为:
bigfish@wangyu-desktop:tmp $ cut -d: -f2 test1.txt
EEEEE
FFFFF
GGGGG
HHHHH
paste命令可以按顺序将给定文件相应行的各行一一输出,各个文件的内容之间以制表符分开,以新的一行作为结束。
bigfish@wangyu-desktop:tmp $ cat test1.txt
AAAAA: EEEEE
BBBBB: FFFFF
CCCCC: GGGGG
DDDDD: HHHHH
bigfish@wangyu-desktop:tmp $ cat test2.txt
11111
22222
33333
44444
bigfish@wangyu-desktop:tmp $ paste test1.txt test2.txt
AAAAA: EEEEE 11111
BBBBB: FFFFF 22222
CCCCC: GGGGG 33333
DDDDD: HHHHH 44444
bigfish@wangyu-desktop:tmp $ paste -d! test1.txt test2.txt
AAAAA: EEEEE!11111
BBBBB: FFFFF!22222
CCCCC: GGGGG!33333
DDDDD: HHHHH!44444
sed是流编辑器。
bigfish@wangyu-desktop:tmp $ cat test1.txt
AAAAA: EEEEE
BBBBB: FFFFF
CCCCC: GGGGG
DDDDD: HHHHH
bigfish@wangyu-desktop:tmp $ cat test1.txt | sed -e "s/AAAAA/KKKKK/g" -e "/GGGGG/d"
KKKKK: EEEEE
BBBBB: FFFFF
DDDDD: HHHHH
下面from:http://www.diybl.com/course/3_program/shell/shelljs/200862/119686_2.html
tr命令转换字符
-cRANGE 将在RANGE中指定的字符剪切掉
-dCHARACTER 指定字段定界符为CHARACTER
-fRANGE 将RANGE中的字段剪切掉
bigfish@wangyu-desktop:tmp $ cat test1.txt
AAAAA: EEEEE
BBBBB: FFFFF
CCCCC: GGGGG
DDDDD: HHHHH
剪切每行的第一个字符
bigfish@wangyu-desktop:tmp $ cut -c1 test1.txt
A
B
C
D
剪切每行的1-3和5-8个字符
bigfish@wangyu-desktop:tmp $ cut -c1-3,5-8 test1.txt
AAAA: E
BBBB: F
CCCC: G
DDDD: H
将每行的第二个字段切掉,字段分割符为:
bigfish@wangyu-desktop:tmp $ cut -d: -f2 test1.txt
EEEEE
FFFFF
GGGGG
HHHHH
paste命令可以按顺序将给定文件相应行的各行一一输出,各个文件的内容之间以制表符分开,以新的一行作为结束。
bigfish@wangyu-desktop:tmp $ cat test1.txt
AAAAA: EEEEE
BBBBB: FFFFF
CCCCC: GGGGG
DDDDD: HHHHH
bigfish@wangyu-desktop:tmp $ cat test2.txt
11111
22222
33333
44444
bigfish@wangyu-desktop:tmp $ paste test1.txt test2.txt
AAAAA: EEEEE 11111
BBBBB: FFFFF 22222
CCCCC: GGGGG 33333
DDDDD: HHHHH 44444
bigfish@wangyu-desktop:tmp $ paste -d! test1.txt test2.txt
AAAAA: EEEEE!11111
BBBBB: FFFFF!22222
CCCCC: GGGGG!33333
DDDDD: HHHHH!44444
sed是流编辑器。
bigfish@wangyu-desktop:tmp $ cat test1.txt
AAAAA: EEEEE
BBBBB: FFFFF
CCCCC: GGGGG
DDDDD: HHHHH
bigfish@wangyu-desktop:tmp $ cat test1.txt | sed -e "s/AAAAA/KKKKK/g" -e "/GGGGG/d"
KKKKK: EEEEE
BBBBB: FFFFF
DDDDD: HHHHH
下面from:http://www.diybl.com/course/3_program/shell/shelljs/200862/119686_2.html
tr命令转换字符
标志
-A | 使用范围和字符类 ASCII 整理顺序、一个字节一个字节地执行所有操作,而不是使用当前语言环境整理顺序。 |
-C |
指定 String1 值用 String1 所指定的字符串的补码替换。String1 的补码是当前语言环境的字符集中的所有字符,除了由 String1 指定的字符以外。如果指定了 -A 和 -c 标志都已指定,则与所有 8 位字符代码集合有关的字符将被补足。如果指定了 -c 和 -s 标志,则 -s 标志适用于 String1 的补码中的字符。
如果没有指定 -d 选项,则由 String1 指定的字符的补码将放置到升序排列的数组中(如 LC_COLLATE 的当前设置所定义)。 |
-c |
指定 String1 值用 String1 所指定的字符串的补码替换。String1 的补码是当前语言环境的字符集中的所有字符,除了由 String1 指定的字符以外。如果指定了 -A 和 -c 标志都已指定,则与所有 8 位字符代码集合有关的字符将被补足。如果指定了 -c 和 -s 标志,则 -s 标志适用于 String1 的补码中的字符。
如果没有指定 -d 选项,则由 String1 指定的值的补码将放置到通过二进制值升序排列的数组中。 |
-d |
从标准输入删除包含在由 String1 指定的字符串中的每个字符。 注:
|
-s | 在重复字符序列中除去除第一个字符以外的所有字符。将 String1 所指定的字符序列在转换之前从标准输入中除去,并将 String2 所指定的字符序列从标准输出中除去。 |
String1 | 指定一个字符串。 |
String2 | 指定一个字符串。 |
退出状态
该命令返回以下出口值:
0 | 所有输入处理成功。 |
>0 | 产生错误。 |
示例
- 若要将大括号转换为小括号,请输入:
tr '{}' '()' < textfile > newfile
这便将每个 {(左大括号)转换成 ((左小括号),并将每个 }(右大括号)转换成 )(右小括号)。所有其它的字符都保持不变。
- 若要将大括号转换成方括号,请输入:
tr '{}' '\[]' < textfile > newfile
这便将每个 {(左大括号)转换成 [(左方括号),并将每个 }(右大括号)转换成 ](右方括号)。左方括号必须与一个 "\"(反斜扛)转义字符一起输入。
- 若要将小写字符转换成大写,请输入:
tr 'a-z' 'A-Z' < textfile > newfile
- 若要创建一个文件中的单词列表,请输入:
tr -cs '[:lower:][:upper:]' '[\n*]' < textfile > newfile
这便将每一序列的字符(除大、小写字母外)都转换成单个换行符。*(星号)可以使 tr 命令重复换行符足够多次以使第二个字符串与第一个字符串一样长。
- 若要从某个文件中删除所有空字符,请输入:
tr -d '\0' < textfile > newfile
- 若要用单独的换行替换每一序列的一个或多个换行,请输入:
tr -s '\n' <&
相关阅读 更多 +