首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何使用awk读取一行的一部分,包括空格数?

如何使用awk读取一行的一部分,包括空格数?
EN

Stack Overflow用户
提问于 2022-03-22 00:24:29
回答 4查看 295关注 0票数 1

我希望使用"awk subtring“提取一个值,它也应该计算没有任何分隔符的空格数。

例如,下面是输入,我想提取"29611",包括空格,

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
201903011232101029 2961104E3021  223  0 12113  5  15 8288 298233 0  45  0     39    4  

我使用了这种方法,但它使用空间作为分隔符:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
more abbas.dat | awk '{print substr($1,1,16),substr($1,17,25)}'

预期产出应是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
201903011232101029  2961

但它只打印

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
201903011232101029

我的问题是,我们如何使用"substr“来打印计算空格?

我知道,我可以使用这个命令获得所需的输出,但这对我的目标没有帮助。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
more abbas.dat | awk '{print substr($1,1,16),substr($2,1,5)}'
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2022-03-22 00:37:17

第一种解决方案:和您的示例一起使用,请尝试遵循awk代码。用GNU awk编写和测试。这里使用match函数的awk获得所需的输出。

To打印第一个字段,然后从第二个字段开始使用不同的空格,然后从第二个字段打印5位数字,然后使用以下方法:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
awk 'match($0,/^[0-9]+[[:space:]]+[0-9]{5}/){print substr($0,RSTART,RLENGTH)}'  Input_file

在第一个字段中打印16个字母,从第二个字段打印5个字母,包括在第一个字段和第二个字段之间不同长度的空格:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
awk 'match($0,/^([0-9]{16})[^[:space:]]+([[:space:]]+)([0-9]{5})/,arr){print arr[1] arr[2] arr[3]}'  Input_file

第二解决方案:使用GNU grep,考虑到您的第2列前4个所需值可以是任何值(例如:数字、字母等),请尝试如下。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
grep -oP '^\S+\s+.{5}' Input_file

在第二个字段中只匹配4个数字,在grep上有一个小的变化。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
grep -oP '^\S+\s+\d{5}' Input_file
票数 4
EN

Stack Overflow用户

发布于 2022-03-22 00:31:06

如果总是有一个空格,您可以使用以下命令打印第一个组,再加上第二个组的前5个字符。

注:问题中不清楚你想要4个字符还是5个字符,但这很容易调整。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
more abbas.dat | awk '{print $1" "substr($2,1,5) }'
票数 1
EN

Stack Overflow用户

发布于 2022-03-22 00:52:33

我认为最简单的方法是在您的命令中包含"Fs“。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
more abbas.dat | awk -Fs '{print substr($1,1,16),substr($1,17,25)}'
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71568900

复制
相关文章
python读取文件如何去除空格_python读取txt文件时怎么去掉空格
Python读取TXT文件可以通过replace()函数来去除TXT文件中的空格,基本结构:replace(to_replace, value) 前面是需要替换的值,后面是替换后的值。
全栈程序员站长
2022/08/24
6.6K0
poi读取word--空格
Dlimeng
2023/06/29
1740
poi读取word--空格
python3如何实现一行输入,空格隔开
a,b=map(int,input().split()) 如果有多个变量只需 a,b,c=map(int,input().split()) 用逗号隔开 a,b,c=map(int,input().split(','))
SingYi
2022/07/13
6950
AWK使用
引子 zcat hnmuseum_21070701.gz|awk -F'[: ]' '{size[$3":"$4]+=$11} END{for(time in size){print time,size[time]*1.1/1024/1024}}'|sort 命令组成分三个部分:BEGIN、BODY、END BEGIN和END需要关键字进行声明,而且是命令中的可选部分,其在命令执行时之后执行一次 BODY部分不需要关键字声明,但是在命令执行时BODY部分会根据输入的行数而执行多次 awk 'BEGIN{p
码缘
2022/09/21
6610
shell用法(包括awk sed grep eval expr等)
1:取出文件中的第i行到第j行:awk 'NR>=i && NR<=j {print $0}' filename
用户1396155
2018/08/02
1.2K0
awk命令的使用
Ubuntu14.04 目的:想用awk来统计某个文本中单词出现的次数,并以一定的格式输出结构 通常,awk逐行处理文本。awk每接收文件的一行,然后执行相应的命令来处理。 用legal文件来做示例 $ cat /etc/legal The programs included with the Ubuntu system are free software; the exact distribution terms for each program are described in the indivi
AnRFDev
2021/02/01
5360
【Linux】常用命令之 awk 常用实例
在Linux/UNIX系统中,awk是一个功能强大的编辑工具,逐行读取输入文本,并根据指定的匹配模式进行查找,对符合条件的内容进行格式化输出或者过滤处理,可以在无交互的情况下实现相当复杂的文本操作,被广泛应用于Shell脚本,完成各种自动化配置任务。
zenRRan
2020/03/03
2.7K0
使用一行Python代码从图像读取文本
处理图像不是一项简单的任务。对你来说,作为一个人,很容易看着某样东西然后马上知道你在看什么。但电脑不是这样工作的。
磐创AI
2019/12/23
1.6K0
使用一行Python代码从图像读取文本
【Linux_Shell 脚本编程学习笔记四、监控系统内存并报警企业案例脚本】
    参考学习博客:https://www.cnblogs.com/bugingcode/p/8287914.html
梅花
2020/09/28
6250
【Linux篇】--awk的使用
awk是一个强大的文本分析工具。相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。 简单来说awk就是把文件逐行的读入,(空格,制表符)为默认分隔符将每行切片,切开的部分再进行各种分析处理。
LhWorld哥陪你聊算法
2018/09/13
1.7K0
awk中NF的使用
统计机器中网络连接各个状态个数 netstat -a | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}' 一下子不明白$NF是什么意思,去查了下awk的用法,发现NF表示浏览记录的域的个数 awk ‘{print $1}’打印第一列 awk ‘{print $2}’打印第二列 NF表的是列数 如: a b c d e 那么NF=5 $NF就是表示第五列的值,就是一行数据最后一列的那个值 $NF就是一行数据最后一列的那个值 netstat -a
千往
2018/01/24
2.2K0
awk中NF的使用
通过两个简单的教程来提高你的 awk 技能
awk 是 Unix 和 Linux 用户工具箱中最古老的工具之一。awk 由 Alfred Aho、Peter Weinberger 和 Brian Kernighan(即工具名称中的 A、W 和 K)在 20 世纪 70 年代创建,用于复杂的文本流处理。它是流编辑器 sed 的配套工具,后者是为逐行处理文本文件而设计的。awk 支持更复杂的结构化程序,是一门完整的编程语言。
用户8870853
2021/09/13
1.5K0
python使用缩进来表示代码块,缩进的空格数固定为4个(python中空格怎么打)
sum= sum + n *nreturnsumprint (calc([1,2,4]))
全栈程序员站长
2022/07/25
2.6K0
shell脚本实例
'使用sed 去除以空格开头的行,第一个sort进行整理输出,uniq -c进行统计,sort -rn进行从大到小排列 # cat cat.ip | awk -F "|" '{print $1}' | sed "s/ //g" | sort | uniq -c | sort -rn       3 192.168.2.2       3 192.168.2.12       2 192.168.2.14       2 192.168.2.13       1 192.168.2.16       1 19
BGBiao
2018/02/26
3.3K0
【转】使用awk的坑
由于项目经历原因,经常使用awk处理一些文本数据。甚至,我特意下载了一个windows上的awk:gawk.exe,这样在windows上也能享受awk处理数据的方便性,。
yiduwangkai
2019/09/17
1.7K0
如何在awk脚本中使用shell变量
我找到了一些将外部shell变量传递给awk脚本的方法,但是我对 ' 和 " 感到困惑。
程序熵
2023/09/25
2770
如何在awk脚本中使用shell变量
awk 的进阶使用案例
awk是什么?awk是一个报表生成器,拥有强大的文本格式化的能力。我们可以利用awk来处理文本,整理成各种“表”的样子。
小柒吃地瓜
2020/06/07
1.9K0
Linux的文本处理工具浅谈-awk sed grep
日志样子举例如下: http://youku.com 200 http://youku.com 302 http://youku.com 403 http://youku.com 502 http://baidu.com 302 http://baidu.com 404 现想使用awk命令按域名统计 返回码大于等于400的百分比,假如优酷总共有4行,大于等于400的返回码有两行,那占比就为50%
sunsky
2020/08/20
3.6K0
Linux中awk工具的使用
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。简单来说awk就是把文件逐行的读入,默认以空格为分隔符将每行切片,切开的部分再进行各种分析处理。awk是行处理器,相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息
谢公子
2022/01/19
5.3K0
Linux中awk工具的使用
Python 逐行读取socket中的数
网上找到一个简单的用法: socket.makefile().readline()
py3study
2020/01/15
1.5K0

相似问题

使用awk/sed读取列数

23

使用c读取整行(包括空格)

22

如何在awk中搜索包括空格在内的模式?

24

使用fscanf()逐行读取文件,包括空格

151

如何使用awk包括报头

25
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文