如何翻转带连字符的姓名顺序并去除连字符?
姓名翻转与格式转换方案
下面提供几种实用方法,帮你把"brown-john"这类格式转换成john brown:
1. 用sed命令快速处理
直接在终端运行这条命令(假设你的输入文件叫names.txt):
sed -E 's/"([a-z]+)-([a-z]+)"/\2 \1/' names.txt
- 逻辑:用正则捕获连字符前后的两部分,把第二部分(名)和第一部分(姓)交换位置,同时去掉引号。
- 效果:
"brown-john"会变成john brown,原文件里的name1、name2这类行保持不变。
2. 用awk命令处理
如果更习惯awk语法,试试这条命令:
awk -F'"|-' '{if ($2 != "") print $3, $2}' names.txt
- 逻辑:把引号和连字符设为分隔符,提取出姓和名后交换顺序打印。
3. Python脚本灵活处理
如果需要批量处理或保留更多原文件格式,写个简单脚本:
with open("names.txt", "r") as file: for line in file: stripped_line = line.strip() # 只处理带引号的姓名行 if stripped_line.startswith('"') and stripped_line.endswith('"'): last_name, first_name = stripped_line.strip('"').split('-') print(f"{first_name} {last_name}") else: # 其他行原样输出 print(stripped_line)
运行脚本后就能得到你想要的格式。
内容的提问来源于stack exchange,提问作者Joe
相关产品推荐
相关产品推荐

