wc
*统计行数,单词书和字符数
*使用-l仅作行统计(最常用)
*使用-w仅作单词统计
*使用-c做字符统计
* wc <file>
例如:
wc install.log
显示结果为
932 1872 37619 install.log
分别表示
行数 单词书 字符数 文件名
如果对/etc/passwd进行行数统计,就可以知道有多少用户账号。因为一个用户占用一行
wc -l /etc/passwd
uniq
*将文件中相邻的重复行移除
*可使用sort先进行排序,然后用uniq移除重复行。或者使用sort -u
*-c参数显示原文件中该行的出现次数
用例
uniq file1
sort file1 ! uniq
uniq -c file1
其他字符串处理工具
*paste 将文件粘贴在一起
*tr 转义字符串
用例
paste file1 file2 file3 > merge
tr 'A-Z' 'a-z' < .bash_profile
以上tr的例子之前也有举过,现在另举一例。
在unix中段落符号是$,而在dos中式/r。所以在dos中unix文本的段落符号会失效。
先查看一下段落符号
cat -A file.txt
以上-A表示显示所有字符,可以看到每行末尾都有个$
使用
cat -A file.txt | tr '$' '/r' > file2.txt
这样就将段落符号替换并生成新的file2.txt文件了。查看新文件
cat -A file2.txt
看到末尾不是/r而是^M$。这是unix系统的解释,其实已经替换成功了。
我们可以一条更简洁的等价指令完成刚才的工作
unix2dos -n file.txt file2.txt
反方向转换的指令是dos2unix
diff版本比对
先看一下两个文件的内容
tail ABC.txt abc.txt
===> ABC.txt <===
A
B
C
===> abc.txt <===
a
b
c
然后比对两个文件
diff ABC.txt abc.txt
结果是
1c1
< A
---
> a
3c3
< C
---
> c
以上1c1表示第1行,全文第1个字符有不同
<表示第一个文件,>表示第二个文件
还可以使用sdiff命令比对
sdiff ABC.txt abc.txt
输出
A | a
B B
C | c
其中有差异的行之前都会标上|
aspell拼写检查
aspell check <file>
如果有拼错,则会跳到单词,屏幕下方显示一些备用修改项,以及提供操作选项,例如忽略,替换,退出等。
aspell拼写检查依据一个字典文件
less /usr/share/dict/words
查看该文件行数
cat /usr/share/dict/words | wc -l
显示479623,说明有近48万个单词。可以到http://aspell.sourceforge.net更新字典文件
查询单词
look <字符串>
例如
look exer
结果显示出所有以exer开头的单词,这也是根据上述字典文件而来。
文本格式化工具
*expand 将tab转换为space
*fmt 重新格式段落
*pr 重新格式打印,默认情况下输出66行/页,其中包括56行文本和一个header
使用cat -A查看文件内容时,如果看到^I,说明这是个tab符。以下将tab转为空格
expand file.tab > testfile.tab
fmt格式化输出。-u表示统一空白规格,-w表示一行中的最大字符数
fmt -u -w50 read
显示打印输出
pr -h"This is header" -l20 -5 /usr/share/dict/words | more
-h定制header文本,l20表示每页20行,其中5表示分栏。
RH-033 2011-02-16
最新推荐文章于 2024-08-17 11:15:39 发布