gpt4 book ai didi

awk - 输出匹配模式,同时保留它们存在的行-bash

转载 作者:行者123 更新时间:2023-12-03 13:49:24 26 4
gpt4 key购买 nike

我遇到了一个似乎无法弄清的单调乏味的问题,尽管经过了一段时间的尝试,但我确信这很简单。
我有一个文件:

$ 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?尽管我假设使用此方法,然后每一行都将连接到一行,但又不是所需的输出。

最佳答案

awk进行救援!

$ awk '{for(i=1;i<=NF;i++) if($i~/d$/) printf "%s ",$i; print ""}' file

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

关于awk - 输出匹配模式,同时保留它们存在的行-bash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66090036/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com