【发布时间】:2015-11-30 17:26:14
【问题描述】:
我有一个 .txt 文件,其中最后一列在“Baker 2-13”或“Charlie 03-144”等文本之后包含一个数字模式。我想删除行尾的所有数字,只剩下贝克和查理。我尝试在 awk 语句的末尾使用 sed 命令管道,但没有成功。
sed -E 's/[0-9]{1,2}"-"[0-9]{1,3}$//'
我已经尝试在我的 sed 命令中添加空格和回车,但仍然没有成功。
sed -E 's/[0-9]{1,2}"-"[0-9]{1,3}\s\r$//'
我也试过这个,但它只在我回显文本样本时有效,它不适用于我的 .txt 文件的每一行
echo "CHARLIE 02-157" | sed -E 's/[0-9]*([0-9])+\-[0-9]*([0-9])+$//'
有什么想法吗?
【问题讨论】:
-
只有两列吗?您要替换原始文件还是将结果转储到 STDOUT?
-
这里是完整的声明:
awk -F\| '$7 ~ /-OF|-AR/ { print $7, $3, $4, $5 }' qry_log.txt | sort -u | sed -E 's/[0-9]{1,2}-[0-9]{1,3}$//'所以四列,它可以替换原始文件或输出到新文件。无论哪种方式都无所谓。 -
从四列中,您只想过滤掉名称。嗯?
-
您的输入文本文件是否可能在 MS Windows 中生成或修改?如果是这样,您可能必须将其转换为使用 unix 样式的行尾。请将
od -c inputfile.txt | head或cat -vet inputfile.txt | head的输出添加到您的问题中。