linux 打印my.txt文件的第10-15行
#打印my.txt文件的第10-15行 sed =stream editor
sed -n '10,15p' my.txt
-n 选项告诉 sed 不要自动打印每一行。
'10,15p' 是 sed 的脚本,告诉 sed 打印文件的第 10 行到第 15 行。p 代表 print,即打印。
#打印my.txt文件的第10-15行 awk 是三个人名字各取了一个字母
awk 'NR>=10 && NR<=20' my.txt
常用的awk命令示例:
打印文件的所有行:
awk '{ print $0 }' filename
打印文件的第10行到第20行:
awk 'NR>=10 && NR<=20' filename
打印包含特定文本的所有行:
awk '/pattern/' filename
打印每行的第一个字段:
awk '{ print $1 }' filename
打印每行的最后一个字段:
awk '{ print $NF }' filename
打印每行的字段总数:
awk '{ print NF }' filename
使用BEGIN和END块:
awk 'BEGIN { print "Start processing" } { print $0 } END { print "End processing" }' filename
计算某个字段的总和:
awk '{ sum += $1 } END { print "Sum:", sum }' filename
替换文本并输出到另一个文件:
awk '{gsub(/old/,"new"); print}' filename > newfile
shell awk与sed区别
awk 和 sed 都是 Unix/Linux 系统中的文本处理工具,它们各自有独特的用途和特点:
-
用途:
awk: 主要用于文本处理,特别是用于复杂的文本分析和报告生成。它可以读取文件,并对数据进行模式匹配、字段提取、计数、求和等操作。sed: 主要用于文本的过滤和替换。它是一个流编辑器,用于执行基础的文本转换,如查找和替换文本字符串。
-
语法:
awk: 使用模式/动作对来处理文本。例如,awk '{print $1}'会打印每一行的第一个字段。sed: 使用正则表达式来处理文本。例如,sed 's/old/new/g'会将文本中的 "old" 替换为 "new"。
-
编程能力:
awk: 具有更强的编程能力,支持变量、控制结构(如 if 语句、循环等)和函数。sed: 主要用于简单的文本替换,不具备awk那样的编程能力。
-
复杂性:
awk: 功能强大,但语法相对复杂,适合复杂的数据处理任务。sed: 语法简单,易于学习和使用,适合快速的文本替换和过滤任务。
-
性能:
awk: 由于其强大的功能,处理速度可能不如sed快,特别是在简单的文本替换任务中。sed: 由于专注于流编辑,通常在执行简单任务时性能更好。
-
适用场景:
awk: 适合需要进行复杂数据处理和分析的场景,如生成报表、统计数据等。sed: 适合快速文本替换、删除或插入文本行等简单编辑任务。
总结来说,awk 和 sed 各有所长,选择哪个工具取决于你的具体需求。如果你需要进行复杂的文本分析和数据处理,awk 是更好的选择。如果你只需要进行简单的文本替换或过滤,sed 可能更加适合。
浙公网安备 33010602011771号