![连接两个文件并用换行符分隔](https://linux22.com/image/873509/%E8%BF%9E%E6%8E%A5%E4%B8%A4%E4%B8%AA%E6%96%87%E4%BB%B6%E5%B9%B6%E7%94%A8%E6%8D%A2%E8%A1%8C%E7%AC%A6%E5%88%86%E9%9A%94.png)
我有两个文件:
txt:
3 5 7 9 19 20
目录.txt:
000010
100001
111001
如果我只是使用 cat,就没有换行符。我需要一个命令来提供一个如下所示的文件:
3 5 7 9 19 20
000010
100001
111001
答案1
如果正如 steeldriver 建议的那样,您的文件没有以换行符结尾,您可以尝试:
awk '{print}' k.txt h.txt > newfile
或者,如果你喜欢打高尔夫球
awk 1 k.txt h.txt > newfile
或者
perl -lne 'print' k.txt h.txt
或者
( cat k.txt ; echo ""; cat h.txt; echo ) > newfile
或者
echo "$(cat k.txt)"; echo "$(cat h.txt)"
答案2
使用 bash 尝试一下:
cat k.txt <(echo) h.txt > new.txt
答案3
使用sed
:
sed '/^/ r h.txt' k.txt
或更好(谢谢@steeldriver)
sed '$a\' k.txt h.txt
使用ed
:
(echo "0a"; cat k.txt; echo "."; echo "wq") | ed -s h.txt
以及缺少的换行符k.txt
:
(echo "0a"; cat k.txt; echo ""; echo "."; echo "wq") | ed -s h.txt
或者如果您需要单独的输出文件:
(echo "0a"; cat k.txt; echo ""; echo "."; echo "w out.txt"; echo "q") | ed -s h.txt
答案4
意识到 file1 可能不包含换行符,为什么不直接自己添加换行符呢?(cat file1.txt; printf "\n"; cat file2.txt ) > out.txt
另一种方法是printf "\n" | cat file1.txt - file2.txt