如何将文本文件中的两列内容拆分至不同行?
解决方法
问题根源是你用tr "\t" "\n"是针对制表符做替换,但你的文件两列之间是空格(可能是多个连续空格),所以这个命令完全没起作用。以下是几种可行的解决方案:
方法1:用awk(最推荐,适配任意空白分隔)
awk 默认会把任意空白(空格、制表符、连续空格)当作列分隔符,直接提取两列并按格式输出:
awk '{print $1 "\n\n" $2}' 你的输入文件名.txt > 输出文件名.txt
这个命令会把每行的第一列单独输出,然后空一行,再输出第二列,完全匹配你要的格式。
方法2:用sed(针对空格分隔的情况)
如果确定两列之间是空格(单个或多个),可以用sed把分隔的空格替换成两个换行:
- GNU sed 版本:
sed 's/[[:space:]]+/\n\n/' 你的输入文件名.txt > 输出文件名.txt
- BSD sed(比如macOS自带的)版本:
sed 's/[[:space:]]\{1,\}/\n\n/' 你的输入文件名.txt > 输出文件名.txt
方法3:用tr配合sed(间接实现)
先把所有连续空格压缩成单个换行,再通过sed插入额外的空行:
tr -s ' ' '\n' < 你的输入文件名.txt | sed 'N;s/\n/\n\n/' > 输出文件名.txt
内容的提问来源于stack exchange,提问作者Mohamed Aziz Hadj Nasr
相关产品推荐
相关产品推荐

