gpt4 book ai didi

regex - Sed 匹配数字后跟字符串并返回数字

转载 作者:行者123 更新时间:2023-12-02 00:50:21 28 4
gpt4 key购买 nike

您好,我有一个包含以下内容的文件:

   7    Y-N2
8 Y-H
9 Y-O2

我想用下面的sed命令匹配它,得到行首的数字:

abc=$(sed -n -E "s/([0-9]*)(^[a-zA-Z])($j)/\1/g" file)

$j 是一个变量,正好包含 Y-O2Y-H

数字不是行号。

数字后面总是跟着一个字母。

数字之前是空格。

回显 $abc 返回白线。

谢谢

最佳答案

这里有很多问题:

  • 有空格,你不用考虑
  • ^ 必须在 inside char 类中才能生成负数字母
  • 您正在使用 -n 选项,因此您必须使用 p 命令,否则将不会打印任何内容(并且 g 选项是在这里没用)

工作命令(我已将 -E 更改为 -n 因为我的 sed 版本不支持它,两者都应该工作):

sed -nr "s/ *([0-9]+) +([^a-zA-Z])($j)/\1/p" file

注意:awk 似乎更适合这项工作。例如:

awk -v j=$j '$2 == j { print $1 }' file

关于regex - Sed 匹配数字后跟字符串并返回数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40495246/

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