如何在Bash中从文本文件提取唯一值并生成空格分隔字符串
提取文本文件唯一值并生成空格分隔字符串
需求说明
有一个无表头的文本文件(示例文件file.txt内容如下),需要提取其中的唯一值,生成以空格分隔的带双引号字符串:
文件内容:
a b b c a c b
期望输出结果:
"a b c"
实现方法
Shell命令(适用于Linux/macOS环境)
通过组合基础命令即可完成:
sort file.txt | uniq | tr '\n' ' ' | sed 's/ $//' | awk '{print "\""$0"\""}'
sort file.txt:对文件内容排序,让重复行集中uniq:去除连续的重复行tr '\n' ' ':将换行符替换为空格,把多行转为单行sed 's/ $//':移除末尾多余的空格awk '{print "\""$0"\""}':给最终结果添加首尾双引号
Python脚本(跨平台通用)
如果需要跨Windows、Linux、macOS使用,可编写Python脚本:
with open('file.txt', 'r', encoding='utf-8') as f: # 读取每行并过滤空行、去除首尾空白字符 lines = [line.strip() for line in f if line.strip()] # 去重后排序,保证结果有序 unique_vals = sorted(set(lines)) # 拼接成目标格式字符串 result = f'"{" ".join(unique_vals)}"' print(result)
内容的提问来源于stack exchange,提问作者Giordano
相关产品推荐
相关产品推荐

