linux文本三剑客grep、awk、sed学习

grep命令用于在文本文件中搜索指定的字符串或模式。它的基本语法如下:

grep [选项] "搜索模式" 文件名

其中,选项可以是以下之一:

  • i:忽略大小写
  • v:显示不包含指定字符串的行
  • n:显示匹配行的行号
  • r:递归搜索子目录中的文件
  • l:仅显示包含指定字符串的文件名
  • c:显示匹配行的数量
  • w:匹配整个单词
  • o:仅显示匹配的部分

示例:

在文件file.txt中搜索字符串"hello":

grep "hello" file.txt

在文件file.txt中搜索字符串"hello",并忽略大小写:

grep -i "hello" file.txt

在文件file.txt中搜索字符串"hello",并显示匹配行的行号:

grep -n "hello" file.txt

在目录dir中递归搜索子目录中的文件,搜索字符串"hello":

grep -r "hello" dir

在文件file.txt中搜索字符串"hello",并仅显示包含该字符串的文件名:

grep -l "hello" file.txt

awk是一种强大的文本处理工具,主要用于在Linux系统中对文本文件进行模式扫描和处理。以下是awk的一些常用方法和示例:

基本用法:

awk '{print $1, $2}' file.txt

这个示例中,awk会读取file.txt文件,然后打印每一行的第一个和第二个字段。

使用变量:

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

这个示例中,awk会读取file.txt文件,然后将每一行的第一个字段累加到变量sum中,最后输出sum的值。

使用条件语句:

awk '/pattern/ {print $1, $2}' file.txt

这个示例中,awk会读取file.txt文件,然后打印包含"pattern"的行的第一个和第二个字段。

使用循环:

awk 'BEGIN {for (i=1; i<=10; i++) print i}'

这个示例中,awk会在处理文件之前先执行一次循环,打印出1到10的数字。

使用函数:

awk '{print length($0)}' file.txt

这个示例中,awk会读取file.txt文件,然后打印每一行的长度。

使用正则表达式:

awk '/pattern/ {print $1, $2}' file.txt

这个示例中,awk会读取file.txt文件,然后打印包含"pattern"的行的第一个和第二个字段。

使用内置变量:

awk '{print NR, $1, $2}' file.txt

这个示例中,awk会读取file.txt文件,然后打印当前行的行号、第一个字段和第二个字段。

使用自定义函数:

awk '{print my_function($1, $2)}' file.txt

这个示例中,awk会读取file.txt文件,然后调用名为my_function的自定义函数处理每一行的第一个和第二个字段,并打印结果。

sed(Stream EDitor)是一种流编辑器,用于对文本文件进行基本的文本转换和处理。以下是一些常用的sed命令及其示例:

基本用法:

sed 's/old/new/g' file.txt

这个示例中,sed会读取file.txt文件,然后将每一行中的"old"替换为"new",并将结果输出到标准输出。

使用正则表达式:

sed 's/pattern/replacement/g' file.txt

这个示例中,sed会读取file.txt文件,然后将每一行中匹配到的"pattern"替换为"replacement",并将结果输出到标准输出。

使用条件语句:

sed '/pattern/!d' file.txt

这个示例中,sed会读取file.txt文件,然后删除不包含"pattern"的行,并将结果输出到标准输出。

使用内置变量:

sed '$!N;s/\\nold\\n/new\\n/' file.txt

这个示例中,sed会读取file.txt文件,然后将每一行的最后一个"old"替换为"new",并将结果输出到标准输出。

使用自定义函数:

echo "function my_function(a, b) { return a + b; }" | sed -e '1s/^/my_function(/' -e 's/)$/)/' file.txt

这个示例中,sed会读取file.txt文件,然后调用名为my_function的自定义函数处理每一行的第一个和第二个参数,并将结果输出到标准输出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值