这些命令都是linux下对于文本,字符串处理及其实用的工具。对他们的使用的一般都是基于正则表达式的;同时也是基于行处理的。
对于正则表达式,这里就不赘述了。
cut:从数据文件或者命令的输出中析取各种各样的数据域非常实用的工具。
cut -cchars file
其中chars指定从文件file中每一行中析取哪些字符,例如-c5:析取第5个字符;-c1,13,14析取1,13,14个字符;-c1-23:析取第1到23个字符,共23
个字符;-c3-:从第3个到最后一个。
cut -ddchar -ffields file
dchar是数据中分隔各字段的分隔符(没有-d时,默认为制表符),fields表示要从文件file中析取出来的字段,从1开始。例如:cut -d: -f1
/etc/passwd:析取/etc/passwd中所有的系统用户名;cut -d: -f1,6 /etc/passwd:析取/etc/passwd中所有的系统用户及其home目录;
paste:与cut相反,把多行合在一起。
paste files
其中files指定的那些文件中对应行组成一行,然后写入stdout。
例如:paste name address 组合name和address文件中对应行。
例如:paste -d'+' names addresses 指定‘+’为分隔符。
paste -s names 将names文件中的所有行并为一行。
sed:编辑数据的程序,意指stream editor,不能用于交互。(ed可以)
sed commond file / sed -f scriptfile file
command是作用与file各行的命令,可以执行一个command的列表scriptfile来处理一系列命令,命令举例:
sed '5d' file 删除file第5行
sed '/[Tt]est/d' file 删除file中包含test和Test字符的行
sed -n '20,25p' file 只显示file中第20到25行
sed -n 'unix/p' file 只显示file中包含unix的行
sed '1,10s/unix/windows/g' file 将file中第1到第10行的unix字符串换成windows
sed '/jan/s/-1/-5' file 将file中所有包含jan的行中的第一个-1改为-5
sed '/s/...//' file 将file中每行前3个字符删掉
sed '/s/...$//' file 将file中每行后3个字符删掉
sed -n 'l' file 显示file中所有行,不可打印字符显示为\nn(nn为该字府的8进制),制表符显示为\t
tr: 用来转换来自标准输入的字符。
tr from-chars to-chars
其中from-chars和to-chars是一个或多个字符。所输入的任何字符,如果再from-chars中,它就被转换成to-chars中对应的字符。转换的结果写入标准
输出。
tr windows linux < file
tr -s : '\11': 将所有:变成制表符,‘\11’为制表符的八进制表述,-s将多个连续的制表符变为一个。
tr -d ' ' < file:从文件中,将所有空格删除
grep: 可以从一个或者多个文件中搜索特定的字符串模式
grep pattern files
grep '*' file: 搜索file中所有含有*号的行
grep -v 'windows' file:显示file中所有不含有windows的行
grep -l 'windowsUnix' files:从files中搜索,显示包含windowsunix字符串的文件列表
grep -n 'windowsUnix' file: 显示file中包含特定字符串的行号
sort:排序操作
sort files:去除指定文件的每行,将他们升序排序
sort -u files:去除重复的行
sort -r files:反序
sort files -o file2:将files中的行排序输入file2中
sort -n file:按照file的算术方法排序
sort +2n files: 按算术方法排序files的第三列(跳过2列,列以空格或者制表符分隔)
sort +2n -t: file: 按算术方法排序files的第3列,每列以:分隔。
uniq: 查找重复行
uniq files:显示files中的各行,去除重复行
uniq -d files: 显示files中重复的行
uniq -c files: 计数files中重复行分别出现的次数
awk/perl
阅读(764) | 评论(1) | 转发(0) |