use*_*326 7 command-line text-processing
我有两个文件:
k.txt:
3 5 7 9 19 20
Run Code Online (Sandbox Code Playgroud)
h.txt:
000010
100001
111001
Run Code Online (Sandbox Code Playgroud)
如果我只使用 cat,则没有换行符。我需要一个命令来提供一个如下所示的文件:
3 5 7 9 19 20
000010
100001
111001
Run Code Online (Sandbox Code Playgroud)
ter*_*don 19
如果正如 steeldriver 所建议的那样,您的文件没有以换行符结尾,您可以尝试:
awk '{print}' k.txt h.txt > newfile
Run Code Online (Sandbox Code Playgroud)
或者,如果你喜欢打高尔夫球
awk 1 k.txt h.txt > newfile
Run Code Online (Sandbox Code Playgroud)
或者
perl -lne 'print' k.txt h.txt
Run Code Online (Sandbox Code Playgroud)
或者
( cat k.txt ; echo ""; cat h.txt; echo ) > newfile
Run Code Online (Sandbox Code Playgroud)
或者
echo "$(cat k.txt)"; echo "$(cat h.txt)"
Run Code Online (Sandbox Code Playgroud)
使用sed
:
sed '/^/ r h.txt' k.txt
Run Code Online (Sandbox Code Playgroud)
或更好(感谢@steeldriver)
sed '$a\' k.txt h.txt
Run Code Online (Sandbox Code Playgroud)
使用ed
:
(echo "0a"; cat k.txt; echo "."; echo "wq") | ed -s h.txt
Run Code Online (Sandbox Code Playgroud)
以及缺少的换行符k.txt
:
(echo "0a"; cat k.txt; echo ""; echo "."; echo "wq") | ed -s h.txt
Run Code Online (Sandbox Code Playgroud)
或者如果您需要单独的输出文件:
(echo "0a"; cat k.txt; echo ""; echo "."; echo "w out.txt"; echo "q") | ed -s h.txt
Run Code Online (Sandbox Code Playgroud)
这就是paste的工作:
paste -sd'\n' file1 file2
Run Code Online (Sandbox Code Playgroud)
-s
makepaste
按命令行顺序连接每个文件的所有行。-d'\n'
makepaste
使用换行符作为分隔符。