Linux 简单的文本处理

目的

1.常见文本处理命令
2.如何简单处理文本

学习目录

  1. tr
  2. col
  3. join
  4. 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 worldfile1file2文件中包含相同内容(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文本

发布了32 篇原创文章 · 获赞 0 · 访问量 893
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章