如何将shell文件中带换行空格的多行内容合并为逗号分隔单行?
文本转换实现方法
核心处理逻辑为三步:移除所有换行符将内容拼接为单行、清理所有逗号前后的多余空白、清理内容首尾的多余空白,以下是不同环境下的可用方案:
方案1:awk实现(兼容性最高,适配所有Linux/Unix环境)
# 直接输出处理结果 awk '{gsub(/^[[:space:]]+|[[:space:]]+$/, "", $0); printf "%s", $0}' 你的文件路径 | awk '{gsub(/[[:space:]]*,[[:space:]]*/, ","); print}' # 如需保存到新文件,末尾加重定向即可 awk '{gsub(/^[[:space:]]+|[[:space:]]+$/, "", $0); printf "%s", $0}' 你的文件路径 | awk '{gsub(/[[:space:]]*,[[:space:]]*/, ","); print}' > 输出文件路径
方案2:tr+sed组合实现
# 直接输出处理结果 tr -d '\n' < 你的文件路径 | sed 's/[[:space:]]*,[[:space:]]*/,/g' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' # 如需直接修改原文件,使用以下写法 tr -d '\n' < 你的文件路径 | sed 's/[[:space:]]*,[[:space:]]*/,/g' | sed 's/^[[:space:]]*//;s/[[:space:]]*$//' > temp_file && mv temp_file 你的文件路径
方案3:Perl实现(写法更简洁)
perl -0777 -pe 's/\n//g; s/\s*,\s*/,/g; s/^\s+|\s+$//g' 你的文件路径
内容的提问来源于stack exchange,提问作者Jose Campos
相关产品推荐
相关产品推荐

