awk - 输出匹配模式,同时保留它们存在的行 - bash
问题描述
我遇到了一个似乎无法弄清楚的乏味问题,尽管搜索和尝试了一段时间,但我相信它非常简单。
我有一个文件:
$ cat test.txt
shdh blah blah balg blah 0.44d 0.55d 0.33d
shdh blah blahdf fvalg blah 6.442d 1.515d 1.23d
3858 shdh blah blah balg blah 2.46d 9.35d 0.83d
shdh blah blah balg blah 4.46d
7 hh 4.5 5.34d 5.55d
t y 6.02d
88 2.7d
0.004d
shdh blah blah balg blah 0.96d 1.113d
6 yjryjh 423.99d 0.1d blah blah 0.9d 0.117d
我想匹配所有 *d 值,过滤掉其余的值,同时保留它们所在的行。IE。要像这样返回所需的输出:
0.44d 0.55d 0.33d
6.442d 1.515d 1.23d
2.46d 9.35d 0.83d
4.46d
5.34d 5.55d
6.02d
2.7d
0.004d
0.96d 1.113d
423.99d 0.1d 0.9d 0.117d
我能够匹配模式,但问题是每个值都会在新行上返回,这不是我想要的:
$ cat test.txt | grep -Eo '[0-9]+\.[0-9]+d'
0.44d
0.55d
0.33d
6.442d
1.515d
1.23d
2.46d
9.35d
0.83d
4.46d
5.34d
5.55d
6.02d
2.7d
0.004d
0.96d
1.113d
423.99d
0.1d
0.9d
0.117d
有没有人知道如何完成并返回所需的输出?可能与tr?尽管我假设使用这种方法,每一行都会连接到一行,但又不是所需的输出。
解决方案
这是一个解决方案sed
:
sed -E 's/[^[:space:]]*[^d]([[:space:]]|$)//g'
我只是颠倒了您的初始逻辑:我没有显示以 结尾的字段d
,而是删除了不显示的字段。
推荐阅读
- python - 将使用 BeautifulSoup 检索到的数据保存到数组中
- node.js - 如何使用 Passport JS 在“登录逻辑”中添加错误/成功消息?
- flutter - 如何测试我的模型是否能够读取 json
- amazon-web-services - CloudWatch 自定义 EC2 指标:缺少磁盘使用情况
- javascript - Javascript 和 Selenium:函数调用的问题
- angular - 在 Angular 中获取先前请求的 URL
- swift - UISwitch 的奇怪行为
- reactjs - 属性 'setUser' 不存在于类型'Readonly<{}> & Readonly<{ children?: ReactNode; }>'
- reactjs - 在响应中调用函数以从 componentDidMount 获取 API 数据
- javascript - vue js 等于字符串