目的
1.常见文本处理命令
2.如何简单处理文本
学习目录
- tr
- col
- join
- paste
1.tr命令
将字符进行替换压缩和删除
tr命令 可以对来自标准输入的字符进行替换、压缩和删除。它可以将一组字符变成另一组字符,经常用来编写优美的单行命令,作用很强大。
实例:echo 'hello world' | tr -d 'ol'
意义:删除hello world中所有的ol
实例:echo 'hello world' | tr -s "l"
将hello world中的l去重为一个l
实例:echo 'hello' | tr '[a-z]' '[A-Z]'
:echo 'HELLO | tr '[A-Z] '[a-z]'
意义:将hello转换成HELLO
将HELLO转换成hello
大小写转换
参考网址
2.col命令
过滤控制字符,col 命令可以将Tab换成对等数量的空格键,或反转这个操作。
col命令 是一个标准输入文本过滤器,它从标注输入设备读取文本内容,并把内容显示到标注输出设备。在许多UNIX说明文件里,都有RLF控制字符。当我们运用shell特殊字符>和>>,把说明文件的内容输出成纯文本文件时,控制字符会变成乱码,col命令则能有效滤除这些控制字符。
实例:cat [目录/文件] | col -x | cat -A
:
意义:使用col -x
将相应目录的相关文件中的tab
字符转换成空格
,然后使用cat -A
查看
cat -A
查看不可见字符
参考网址
3.join命令
两个文件中指定栏位内容相同的行连接起来
join命令 用来将两个文件中,指定栏位内容相同的行连接起来。找出两个文件中,指定栏位内容相同的行,并加以合并,再输出到标准输出设备。
实例:
>
:覆盖文件内容并写入
>>
:在文件后面追加,不覆盖
echo '1 hello' > file1
:输入1 hello并覆盖文件内容写入file1文件中
echo '1 world' > file2
:输入1 world并覆盖文件内容写入到file2文件中
join file1 file2
:输出1 hello world
将file1
和file2
文件中包含相同内容(1
)的那一行合并在一起。
实例:sudo join -t':' /etc/passwd[目录/文件] /etc/shadow[目录/文件]
:
意义:将两个文件合并,并指定以':'
为分隔符
-t
:指定分隔符,默认为空格
实例:sudo join -t':' -1 1 [目录/文件] -2 1 [目录/文件]
意义:将2个文件合并,指定以':'
作为分隔符,并对比第一字段和第二字段
-1
:指明第一个文件要用哪个字段来对比,默认是第一个字段
-2
:指明第二个文件要用哪个字段来对比,默认是第一个字段
参考网址
4.paste命令
将多个文件按列队列合并
paste命令 用于将多个文件按照列队列进行合并。
实例:paste -d ':' [文件] [文件] [文件]
意义:将三个文件合并在一起,-d
指定分隔符为':'
,默认为TAB
实例paste -s [文件] [文件] [文件]
意义:将三个文件合并在一起,-s
不合并到一行,每个文件为一行。
参考网址
复习
手动完成 dos 文本格式到 UNIX 文本格式的转换。
echo hello > file1
cat -A file1 | tr '$' '\r\n' > file2; cat -A file2
将unix文本转换成dos文本
cat -A file2 | tr -d '^M$' > file3; cat -A file3
将dos文本转换成unix文本