-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLinux 简单的文本处理
72 lines (57 loc) · 2.98 KB
/
Linux 简单的文本处理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
学习目录
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文本