通过 bash,我尝试从文件中提取部分行。
目前我正在连续使用两个 sed 命令,如下所示:
sed -n -e "s/^abc=//p" file | sed -n -e "s/\.//gp"
可以接收abc=1.2.3
并吐出123
。这让我思考......我可以通过一个命令调用来实现这一目标吗?就像我想在文件中查找与 abc=<digit1>\.<digit2>\.<digit3>
匹配的所有字符串并吐出<digit1><digit2><digit3>
.
编辑:
为了澄清,我希望它只打印出匹配的行。例如,如果我有以下文件:
1.2.3.4
abc=quack
qtip=1.2.3
abc=1.2.3
abc = 4.5.6
运行该命令应该只打印 123
最佳答案
您可以使用 awk
来从 abc=
之后的部分中删除 .
:
awk -F= '$1=="abc"{gsub(/\./, "", $2); print $2}' file
关于regex - 使用 sed/regex 进行 bash 字符串操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25087456/