Linux日常小技巧文本处理三剑客awk、sed、grep

在日常工作中我们经常在Linux使用中遇到文本处理,这就要用到我们的文本处理三剑客awk、sed、grep 是三个在 Linux 环境下经常使用的命令,主要用于处理和操作文本文件。还可以通过终端命令行或 shell 脚本调用,并且可以很容易地组合起来使用。

三者功能简单介绍如下:

  • grep: 用于匹配某个模式的文本行,可以同时对多个文件进行搜索,并支持多种匹配模式。
  • sed: 用于编辑匹配某个模式的文本行,可以进行删除、替换、插入等文本操作。
  • awk: 用于格式化文本文件以及进行复杂的文本处理,最擅长的是取列操作,可以按照指定的分隔符将一行文本拆分成多个字段并进一步处理。

1.使用grep命令查找文件中包含"Hello World"的行

grep "Hello World" text.txt

2.grep命令查找文件中所有不包含"hello"字符串的行,将结果输出到新文件中

grep -v "hello" file.txt > text_file.txt

3使用grep查找多个关键字

grep -E "(pattern1|pattern2)" file.txt

4.sed命令将文件中所有的"hello"字符串替换成"world"

sed 's/hello/world/g' text.txt

5.sed命令给文件的每一行首部加上数字

sed = file.txt | sed 'N;s/\n/\t/' > text_file.txt

6.sed删除文件中匹配特定模式的行

sed '/pattern/d' file.txt

7.sed命令合并两行到一行,并删除其中的空格

sed 'N;s/\n/ /;s/ //g' text.txt

8.使用awk计算文件中的平均数

awk '{sum+=$1} END {print sum/NR}' text.txt

9.使用awk将文件内容反转

awk '{for (i=NF; i>=1; i--) printf("%s ",$i); printf("\n")}' text.txt

10.awk命令处理CSV文件

awk -F, '{print $1,$4}' file.csv

11使用awk命令打印文件的第一列

awk '{print $1}' file.txt

12.awk命令计算文件中第二列的总和

awk '{sum += $2} END {print sum}' file.txt

13.使用 grep 和 awk 找出某个文件中以 "error" 开头的行,并统计其中出现次数最多的单词

grep "^error" /date/to/file | awk '{for(i=1;i<=NF;i++) counts[$i]++} END {for(word in counts) print word,counts[word]}' | sort -rn -k 2 | head -n 1

14.备份当前目录下所有 .txt 文件,并在备份完成后删除原始文件

ls *.txt | xargs -I {} sh -c 'cp {} {}.bak && rm {}'

15.列出某个进程的 PID 和内存占用情况

ps aux | grep "java" | awk '{print $2,$4}'

16.修改某个配置文件中特定的行和列

sed -i 'N;s/old_value/text_value/' /date/to/config_file

17.统计某个目录下所有文件的大小并按从大到小排序输出

du -a /date/to/text | sort -rn | awk '{print $2,$1}'

18.列出某个进程占用的 CPU 和内存资源

ps -p <pid> -o %cpu,%mem,cmd

19.查找并删除日志文件最后一行

sed -i '$d' logfile.log

20.查找并删除某个目录下所有空文件

find /date/to/text -type f -empty -delete

整理不易,欢迎大家点赞收藏转发,关注我每天分析运维小知识。

posted @ 2023-08-12 21:43  寻梦99  阅读(77)  评论(0)    收藏  举报