Unix 下文本操作的利器
Thursday, February 7, 2008 6:37:18 AM
cut 命令可用来截取文本中特定的字段。
(例)
$ cut -c1 file1.txt
截取文件 file1.txt 各行的第1个字符并输出
$ cut -c1-10 file1.txt
截取文件 file1.txt 各行的第1到第10个字符并输出
$ cut -c20- file1.txt
截取文件 file1.txt 各行第20个字符至末尾的字符串并输出
$ cut -d: -f1 file1.txt
截取文件 file1.txt 各行以冒号( : )分割的第1个字符串
$ cut -d' ' -f1,2 file1.txt
截取文件 file1.txt 各行以空格( )分割的第1和第2个字符串
■ paste
paste 命令可用来拼接两个文本文件中的数据。
(例)
文件 file1.txt 的内容:
1
2
3
文件 file2.txt 的内容:
One
Two
Three
$ paste file1.txt file2.txt
显示结果:
1 One
2 Two
3 Three
$ paste -d, file1.txt file2.txt
显示结果:
1,One
2,Two
3,Three
paste -s 可以把一个文件的各行拼接成一整行。
$ paste -s file1.txt
显示结果:
1 2 3
■ sed
sed 是一个数据流编辑器。
(例)
$ sed 's/Unix/UNIX/' file1.txt
把文件 file1.txt 中的字符串 Unix 替换成 UNIX 并输出
$ sed -n '1,2p' file1.txt
输出文件 file1.txt 的头两行
$ sed -n '/UNIX/p' file1.txt
输出文件 file1.txt 中包含 UNIX 的行
$ sed '1,2d' file1.txt
删除文件 file1.txt 的头两行并输出
$ sed '/UNIX/d' file1.txt
删除文件 file1.txt 中包含 UNIX 的行并输出
■ tr
tr 命令用作字符串变换的过滤器。
(例)
$ tr e x < file1.txt
将文件 file1.txt 内的字符'e'替换成字符'x'并输出
$ tr '[a-z]' '[A-Z]' < file1.txt
将文件 file1.txt 内的小写字母替换大写字母并输出
$ tr ' ' '\11' < file1.txt
将文件 file1.txt 内的空格替换为Tab(缩进)并输出
$ tr -s ' ' '\11' < file1.txt
将文件 file1.txt 内连续的空格替换为一个Tab(缩进)并输出
$ tr -d ' ' < file1.txt
删除文件 file1.txt 内所有空格并输出
■ grep
grep命令用于在一个或多个文件中查找符合特定模式的行。
(例)
$ grep '[A-Z]' file1.txt
在文件 file1.txt 中查找包含英文大写字母的行并输出
$ grep '[A-Z]...[0-9]' file1.txt
在文件 file1.txt 中查找包含英文大写字母开头并以数字结尾的行并输出
$ grep -v 'UNIX' file1.txt
在文件 file1.txt 中查找不包含 UNIX 的行并输出
$ grep -l 'Unix' *.txt
在 *.txt 中查找包含 Unix 的文件并输出文件名
$ grep -n 'Unix' file1.txt
在文件 file1.txt 中查找不包含 UNIX 的行并带行号输出
■ sort
sort 命令用来对输入行进行排序并输出。
(例)
$ sort < file1.txt
以升序输出 file1.txt 的各行
$ sort -u < file1.txt
以升序输出 file1.txt 的各行,重复的行只输出一次
$ sort -r < file1.txt
以降序输出 file1.txt 的各行
$ sort file1.txt -o file2.txt
将 file1.txt 的各行排序并输出到文件 file2.txt
$ sort -n file1.txt
将 file1.txt 的各行以数值排序并输出
$ sort +1n file.txt
将 file1.txt 的各行根据第2字段(空格分割)以数值排序并输出
第2フィールドを使って数値的に並び替える。
$ sort +2n -t: file1.txt
将 file1.txt 的各行根据第3字段(冒号分割)以数值排序并输出
■ uniq
uniq 命令用于查找文件中的重复行(输出不重复的行)。
(命令格式) uniq in_file out_file
(例)
$ uniq file1.txt
输出 file1.txt 中不重复的行
$ uniq -d file1.txt
输出 file1.txt 中有重复的行
$ uniq -c file1.txt
统计 file1.txt 中各行的重复次数并输出
※注: 本文翻译整理自《UNIXツール》







