Linux下如何去除单行内重复字符串?以transparent_hugepage=never为例
去除Linux单行文本内的重复字符串(以/proc/cmdline为例)
针对/proc/cmdline中重复出现的参数(比如transparent_hugepage=never),可以通过拆分单行、去重、重新合并的方式处理,以下是两种实用方法:
方法1:排序后去重(会改变参数顺序)
cat /proc/cmdline | tr ' ' '\n' | sort -u | tr '\n' ' ' | sed 's/ $//'
各部分作用:
tr ' ' '\n':将单行内的空格替换为换行,把每个命令行参数拆分为独立行sort -u:对拆分后的行排序,同时自动去除重复项tr '\n' ' ':将换行符换回空格,重新合并为单行sed 's/ $//':移除单行末尾多余的空格
方法2:保留原顺序去重
如果需要保留参数原本的顺序,用awk处理更合适:
cat /proc/cmdline | awk -v RS=' ' '!seen[$0]++ {printf "%s ", $0}' | sed 's/ $//'
各部分作用:
-v RS=' ':设置记录分隔符为空格,让awk把每个参数当作一条独立记录!seen[$0]++:用数组seen追踪已出现的参数,仅处理首次出现的参数printf "%s ", $0:打印参数并添加空格分隔sed 's/ $//':移除末尾多余的空格
内容的提问来源于stack exchange,提问作者wabbajack001
相关产品推荐
相关产品推荐

