文本处理 - 如何使用 sed 从搜索结果中删除部分字符串?
Text Processing - how to remove part of string from search results using sed?
我正在解析 .xml
个文件以查找 HTML 标签内的名称。
我找到了我需要的东西,但我只想保留姓氏。
这是我到目前为止所拥有的(grep
命令名称+清理结果,包括删除标签和文件名,稍后我将对它们进行排序并只留下唯一的名称):
grep -oP '<name>([A-ZÖÄÜÕŽS][a-zöäüõžš]*)[\s-]([A-ZÖÄÜÕŽS][a-zöäüõžš]*)</name>' *.xml --colour | sed -e 's/<[^>]*>//g' | sed 's/la[0-9]*//' | sed 's/$*.xml://'
输出如下所示:
Mart Kreos
Hans Väär
Karel Väär
Jaan Tibbin
Jüri Kull
我想保留姓氏,但删除名字。
我尝试使用以下命令,但它只对某些名称有效,对其他名称无效:
sed -r 's/([A-ZÖÄÜÕŽŠ][a-zöäüõžš]+[ ])([A-ZÖÄÜÕŽS][a-zöäüõžš]+)//g'
你应该使用 cut
. 它更适合你在这里想要实现的目标。而且您将避免与 UTF-8 字符纠缠不清。
这将为您的示例输出中的所有名称提供预期的结果:
cut -d ' ' -f 2
我正在解析 .xml
个文件以查找 HTML 标签内的名称。
我找到了我需要的东西,但我只想保留姓氏。
这是我到目前为止所拥有的(grep
命令名称+清理结果,包括删除标签和文件名,稍后我将对它们进行排序并只留下唯一的名称):
grep -oP '<name>([A-ZÖÄÜÕŽS][a-zöäüõžš]*)[\s-]([A-ZÖÄÜÕŽS][a-zöäüõžš]*)</name>' *.xml --colour | sed -e 's/<[^>]*>//g' | sed 's/la[0-9]*//' | sed 's/$*.xml://'
输出如下所示:
Mart Kreos
Hans Väär
Karel Väär
Jaan Tibbin
Jüri Kull
我想保留姓氏,但删除名字。
我尝试使用以下命令,但它只对某些名称有效,对其他名称无效:
sed -r 's/([A-ZÖÄÜÕŽŠ][a-zöäüõžš]+[ ])([A-ZÖÄÜÕŽS][a-zöäüõžš]+)//g'
你应该使用 cut
. 它更适合你在这里想要实现的目标。而且您将避免与 UTF-8 字符纠缠不清。
这将为您的示例输出中的所有名称提供预期的结果:
cut -d ' ' -f 2