linux批量提取文本,关于bash:如何使用sed从字符串中提取多个文本和数字?

本问题已经有最佳答案,请猛点这里访问。

如何使用" sed"从一行中提取3个或更多单独的文本

我有以下几行:

echo

到目前为止,我可以通过执行以下操作来提取" DOB-029"

sed -n 's/.*\(DOB-[0-9]*\).*/\1/p'

但我没有得到其他文字,例如姓名或职位。

我的预期输出应该是Mike DOB-029 Post-555

已编辑

假设我在文件中有一个列表,我想从整个列表中提取特定的文本/ ID,然后将其保存到.txt文件中

您的预期输出是多少?

我的预期输出应该是Mike DOB-029 Post-555

那最后一个块Male呢? 问题背后的逻辑是什么? 提取分隔的所有内容?

我什么都不想要。 目的是仅显示前三个文字,并用/分隔

使用awk的解决方案:

echo"" | awk -F[/[] '{print $2, $3, $4}'

我们将定界符设置为/或[(-F[/[])。那么我们只需打印分别为2nd, 3rd and 4th fields的字段$2, $3 and $4。

与sed:

echo"" | sed 's/\(^.*\[\)\(.*\)\(\/[^/]*$\)/\2/; s/\// /g'

我最近爱上了.. :-)

如果OP没有为sed请求它,则ID也建议为awk。 具有编程语言功能的脚本语言,根本无法击败它:)

那是个好主意,但是它可能

你可能感兴趣的:(linux批量提取文本)