本问题已经有最佳答案,请猛点这里访问。
如何使用" 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。 具有编程语言功能的脚本语言,根本无法击败它:)
那是个好主意,但是它可能