文本处理
数据流重定位¶
- | 管道符,将管道左边命令的结果作为右边命令的输入
- 比如 cat text 01. txt | grep xxx 等价于 grep xxx text 01. txt
- 如查找文件 ls xx | grep xx
-
嵌套使用 xx|xx|xx|... 依次向右传递
-
重定向(通常用于输出到文件)
>
覆盖>>
追加到末尾- 反向也可以
< <<
-
重定向标准输出和标准错误
- 重定向标准错误
2> file
- 同时重定向输出和错误
&> file
- 重定向标准错误
-
永久重定向
exec 1>somefile
常用命令¶
- cut
- 分割,部分显示
cut /etc/passwd -d ':' -f 1,6
(根据: 分割,输出第 1,6 部分) - 部分输出:
history | cut -c 8-
(位置 8 及之后的数据)
- 分割,部分显示
- sort
- 反转排序
cat /etc/passwd | sort -r
- 按照特定字段进行排序
cat /etc/passwd | sort -t':' -k 3
-n
按数字排序(默认为按字典序)
- 反转排序
-
uniq
- 只能去除连续的重复,因此通常先进行 sort
-dc
,-D
输出重复的行
-
tr
- 删除一段文本中的某些文字,或进行替换
-d
删除和 set1 匹配的字符echo 'hello shiyanlou' | tr -d 'olh'
-s
去除 set1 指定的在输入文本中连续并重复的字符,如去除连续的 lecho 'hello' | tr -s 'l'
- 小写转化为大写
tr '[a-z]' '[A-Z]'
-
join
sudo join -t':' -1 4 /etc/passwd -2 3 /etc/group
-
paste
- 简单的将多个文件合并,以 Tab 分割
-d
指定分隔符-s
每个文件为一行paste -d ':' file1 file2 file3
-
head 截取文件头部
- 设置行数
head -3
- 设置行数
- tail 截取文件尾部