文本处理命令
tr命令:用来删除一段围文本信息中的某些文字,或将其进行转换。使用方式:tr [option]...SET1 [SET2]。常用的选项有选项有-d:删除和set1匹配的字符,-s:去除set1指定的在输入文本中连续并重复的字符
$ echo 'hello world' | tr -d 'olh' # 删除hello world中所有的o,l,h
$ echo 'hello' | tr -s 'l' #将hello中的ll去重
$ cat /etc/passwd | tr '[:lower:]' '[:upper:]' #将小写全部变成大写
$ echo 'shiyanlou' | tr '[a-z]' '[A-Z]' #同上
col命令:将Tab换成对等数量的空格键,或反转这个操作。使用方式:col [option] 。常用的选项有 -x:将Tab转为空格; -h:将空格转换为Tab
$ cat -A /etc/protocols #查看/etc/protocols中的不可见字符。可以看到很多^I,这是Tab转义成可见字符的符号
$ cat /etc/protocols | col -x | cat -A #使用col -x将/etc/protocol中的Tab转换为空格,然后在使用cat查看
join命令:将两个文件中包含相同内容的那一行合并在一起。使用方式:join [option]... file1 file2。常用的选项有-t:指定分隔符,默认为空格;-i:忽略大小写的差异;-1:指明第一个文件要用哪个字段来对比,默认对比第一个字段;-2:只能第二个文件要用哪个字段来对比,默认对比第一个字段
$ echo '1 hello world' > file1 #创建file1
$ echo '1 hello shiyanlou' > file2 #创建file2
$ join file1 file2
$ sudo join -t':' /etc/passwd /etc/shadow #将/etc/passwd和/etc/shadow两个文件合并,指定以':'为分隔符
$ sudo join -t':' -1 4 /etc/passwd -2 3 /etc/group #将/etc/passwd和/etc/group两个文件合并,并指定以':'为分隔符,分别比对第四和第三个字段
paste命令是在不对比数据的情况下,简单的将多个文件合并在一起,以Tab隔开。使用方式:paste [option] file... 常用选项有 -d:制定合并的分隔符,默认为Tab;-s:不合并到一行,每个文件为一行
$ echo hello > file1
$ echo world > file2
$ echo www.baidu.com > file3
$ paste -d ':' file1 file2 file3
$ paste -s file1 file2 file3
小蜜蜂游戏~
$ sudo apt-get install ninvaders
在文件打包与解压缩中提到Windows/dos与Linux/UNIX文本文件一些特殊字符不一致,如断行符Windows为CR+LF( ),Linux/UNIX为LF( )。使用cat -A文本可以看到文本中包含的不可见特殊字符。Linux的 表现出来是一个$,而Windows/dos表现出来为^M$,可以直接使用dos2unix和unix2dos工具在两种格式之间进行转换,使用file命令可以查看文件的具体类型。