Linux命令输出txt文件每一行内容长度并将内容长度不等于指定值的数据重定向到文件
要输出txt文件中每一行的内容长度,可以使用awk
命令来实现。
awk '{print length($0)}' 文件名
其中,{print length($0)}
表示打印每一行的内容长度。
以下是完整的命令示例:
awk '{print length($0)}' 文件名
执行以上命令后,将会输出txt文件中每一行的内容长度。
在你提供的txt文件中,输出结果应该是:
13
13
5
5
5
将内容长度不等于指定值的数据重定向到文件
awk 'length($0) != 13' a.txt.bak > a.txt
awk命令的实现原理可以概括为以下几个步骤:
-
读取输入文本:awk从文件或标准输入(管道)中读取文本行。
-
分割行为字段:默认情况下,awk将每一行根据空格或制表符分割为多个字段,并将它们存储在内置的变量中。
-
匹配模式:对于每一行,awk会检查指定的模式是否匹配,如果匹配成功,则执行对应的操作,否则跳过该行。
-
执行操作:如果模式匹配成功,awk会执行对应的操作。操作可以是打印字段、修改字段值、计算、判断等。
-
重复以上步骤:重复处理下一行,直到所有的行都被处理完毕。
-
输出结果:根据操作的要求,awk可以打印特定字段、计算结果、过滤行等。输出结果可以打印到屏幕上或者重定向到文件中。
在实现上,awk命令使用了一个解释器,它解析并执行awk脚本。该解释器会逐行读取脚本,识别模式和操作,并根据匹配情况执行相应的操作。解释器还提供了一些内置的函数和变量,用于方便地处理文本和进行计算。
总之,awk命令通过读取、分割和处理文本行的方式,可以实现对文本进行灵活的处理和操作。
以下是一些常用的awk命令的示例:
-
打印指定字段:
awk '{print $1}' filename
这个命令会打印文件中每一行的第一个字段。
-
打印特定行:
awk '/pattern/' filename
这个命令会打印文件中匹配指定模式的行。
-
计算行数:
awk 'END{print NR}' filename
这个命令会打印文件中的行数。
-
计算指定字段的总和:
awk '{sum += $1} END{print sum}' filename
这个命令会计算文件中指定字段的总和,并打印结果。
-
根据条件过滤行:
awk '$1 > 10' filename
这个命令会打印文件中第一个字段大于10的行。
-
格式化输出:
awk '{printf "%-10s %-10s\n", $1, $2}' filename
这个命令会按照指定的格式打印文件中的字段。
-
根据字段排序:
awk '{print $2, $1}' filename | sort
这个命令会按照第二个字段对文件中的行进行排序。
-
自定义分隔符:
awk -F':' '{print $1}' filename
这个命令会使用冒号作为字段分隔符,并打印文件中的第一个字段。
以上仅是一些常用的awk命令示例,awk提供了丰富的功能和灵活的操作,可以根据具体需求进行更复杂的处理和操作。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!