我有一个命令向我输出具有以下模式的列表
exp_70_T8_s1
exp_71_T8_s5
exp_72_T8_s10
exp_73_T10_s1
exp_74_T10_s5
exp_75_T10_s10
...
如何sed
在 bash 中分别使用或类似的东西获得“_T”和“_s”之后的数字?
输出应如下所示
8
8
8
10
10
10
和
1
5
10
1
5
10
对于_T
和_s
分别
我的命令的第一部分如下所示:
for f in $(find . -name "someFile.txt" | sort); do echo $f; done | grep /someFolderName/
基本上我想将命令添加到上面给出的命令中。
使用
sed
with 模式分组来捕获所需的部分:([0-9]+)
是第一个捕获的组,[0-9]
匹配之间的任意数字0-9
并+
表示[0-9]
在这种情况下与前面的标记的一个或多个匹配([0-9]+)
是第二个捕获的组在替换模式中,两个捕获的组分别由
\1
和引用\2
。例子:
更改替换模式以满足您的需要,例如没有任何空格:
回答已编辑的问题:
对于
_T
:对于
_s
:使用 AWK:
和:
command
输出文件的命令在哪里。-F_T\|_s
: 设置_T
和_s
作为输入字段分隔符;{print $2}
:打印第二个字段。{print $N}
:打印第三个字段。