悠悠楠杉
网站页面
Shell 脚本是一种强大的脚本语言,用于自动化执行 Linux/Unix 系统中的任务。正则表达式(Regular Expressions, regex)是用于匹配字符串中字符组合的模式。在 Shell 脚本中,正则表达式主要用于搜索、替换、删除等文本处理操作。
. 表示任意单个字符,[] 表示字符集。* 表示零次或多次,+ 表示一次或多次,? 表示零次或一次。| 表示选择,() 用于分组。\d 表示数字,\w 表示字母数字下划线等。grep 'pattern' filenamesed 's/pattern/replacement/g' filename (将匹配的 pattern 替换为 replacement)awk '/pattern/ {action}' filename (当行匹配 pattern 时执行 action)需求:分析 Apache 日志文件,提取出所有请求的 URL 并统计每个 URL 的访问次数。
bash
cat access.log | grep 'GET' | sed 's/.*"[^"]*"\(.*\)"*/\1/' | sort | uniq -c | sort -nr | head -n 100
此命令串首先筛选出所有 GET 请求,然后使用 sed 提取 URL,接着用 sort 和 uniq -c 对 URL 进行排序和计数,最后 head -n 100 显示访问次数最多的前100个 URL。
需求:将一个包含逗号分隔值的 CSV 文件转换为 Tab 分隔值格式的 TSV 文件。
bash
cat data.csv | tr ',' '\t' > data.tsv
使用 tr 命令将逗号替换为制表符,实现了简单的数据格式转换。
^ 表示行首,$ 表示行尾,用于精确匹配整个行。\1, \2 等,用于匹配前面括号内捕获的子串。Shell 脚本结合正则表达式为文本处理提供了强大而灵活的工具集。掌握这些工具和技巧,可以高效地处理各种数据清洗、转换和分析任务。通过实际案例的练习,可以进一步加深理解并提升在具体场景中的应用能力。继续实践和探索,你将能更熟练地运用这些工具来应对更复杂的文本处理挑战。