如何提取文本中竖线之间的ID内容,使用sed命令无法生效该如何解决
可行实现方案
方案1:awk(最推荐)
直接指定竖线为分隔符,输出第二个字段即可,不受第一个竖线前字符串内容影响:
awk -F '|' '{print $2}' 目标文件.txt
- 针对你的示例输入,执行后直接输出三个ID值,无多余内容。
方案2:sed实现
你之前使用的是行范围匹配语法,不符合提取需求,改用捕获组替换即可:
sed 's/^[^|]*|\([^|]*\)|.*/\1/' 目标文件.txt
- 逻辑说明:匹配从行首到第一个竖线的所有内容,捕获两个竖线之间的非竖线字符,再匹配第二个竖线到行尾的内容,最终整行替换为捕获到的ID值。
方案3:cut实现
轻量场景下用cut更简单:
cut -d '|' -f 2 目标文件.txt
- 原理和awk一致,指定竖线为分隔符后取第二个字段。
内容的提问来源于stack exchange,提问作者Arora
相关产品推荐
相关产品推荐

