gpt4 book ai didi

regex - grep regex 仅在一行上输出多个匹配项

转载 作者:行者123 更新时间:2023-12-02 17:24:15 47 4
gpt4 key购买 nike

我想在一行中搜索多个匹配项并使用 grep 仅输出匹配的词

alias host='echo -e "Connecting to host   10.10.11.120\n===================";ssh root@10.10.11.120'
alias host1='echo -e "Connecting to host 10.10.11.121\n===================";ssh root@10.10.11.121'
alias host2='echo -e "Connecting to host 10.10.11.122\n===================";ssh root@10.10.11.122'
alias host3='echo -e "Connecting to host 10.10.11.123\n===================";ssh root@10.10.11.123'

我希望 grep 只输出主机名和 IP 地址,如

host 10.10.11.120
host1 10.10.11.121
host2 10.10.11.122
host3 10.10.11.123

最佳答案

使用greppcre,可以提取需要的字符串

$ grep -oP 'alias \K[^=]+|@\K[0-9.]+' ip.txt 
host
10.10.11.120
host1
10.10.11.121
host2
10.10.11.122
host3
10.10.11.123

但是,每个提取的字符串将在单独的行中,因此可以使用其他命令来连接它们,例如:

$ grep -oP 'alias \K[^=]+|@\K[0-9.]+' ip.txt | paste - -
host 10.10.11.120
host1 10.10.11.121
host2 10.10.11.122
host3 10.10.11.123


或者,也可以使用单个 perl 命令:

$ perl -pe 's/alias (host\d*).*@([\d.]+).*/$1 $2/' ip.txt 
host 10.10.11.120
host1 10.10.11.121
host2 10.10.11.122
host3 10.10.11.123

关于regex - grep regex 仅在一行上输出多个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40065278/

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