Linux 实用操作之文本操作
rg
fzf
匹配完整单词 “linux” 而不是 “linux” 中的字母: 'linux
bat
使用 grep 抓取期望的结果
1grep [-acinv] [--color=auto] '搜寻字串' filename
2
3# 选项与参数:
4
5-a :将 binary 文件以 text 文件的方式搜寻数据
6
7-c :计算找到 '搜寻字串' 的次数
8
9-i :忽略大小写的不同,所以大小写视为相同
10
11-n :顺便输出行号
12
13-v :反向选择,亦即显示出没有 '搜寻字串' 内容的那一行
14
15--color=auto :可以将找到的关键字部分加上颜色的显示喔
在过去登录主机的人中截取登录信息含 root 的行信息:
1last | grep root
使用 awk 命令操作文本
1awk '{[pattern] action}' {filenames}
2awk -F #-F指定所操作文件中的目标分割字符
3awk -v # 设置变量
4awk -k {awk_script} {file} # 使用 awk 脚本
以 tab 隔开打印前五行中每行的第一和第三个字符:
1# 注意必须是内双引号外单引号的形式
2last -n 5 | awk '{print $1 "\t" $3}'
使用 “,” 分隔字符:
1awk -F, '{print $1 " - " $2}' log.txt
设置变量 k 等于 1:
1awk -vk=1 '{print $1, $1+k}' log.txt
使用 my.awk 处理 log.txt
1awk -k my.awk log.txt
使用 sed 命令操作文本
1a: add
2
3c: commute
4
5d: delete
6
7i: insert
8
9p: print
10
11s: s/old/new/g
打印删除了第二到第五行的文本:
1nl /etc/passwd | sed '2,5d'
2# 注:nl 可以额外输出行号
- ‘2,$d’ 匹配删除了第 2 到最后一行的文本
- ‘/root/d’ 匹配删除了含 root 的行的文本
使用 cut 处理结果
对以 : 隔开的结果,输出第三个到第五个:
1echo $PATH | cut -d ':' -f 3,5
使用 sort 和 uniq 处理结果
使用 last 将帐号列出,仅取出帐号栏,进行排序后仅取出一位
1last | cut -d ' ' -f 1 | sort | uniq
根据进程号进行对 ps -ef
列出的前 10 个进程进行排序:
1ps -ef | head -n 10 | sort -k 2
-k
指定了第二列的数据(进程号)作为排序的元素。