我正在尝试cat
三个文件并获取并插入换行符\n
在每个文件之后,我想到使用类似的东西:
cat f1 f2 f3|tr "\EOF" "\n"
没有成功。
实现这一目标的最简单方法是什么?
答案 0 :(得分:23)
cat f1 <(echo) f2 <(echo) f3 <(echo)
或
perl -pe 'eof&&s/$/\n/' a b c
答案 1 :(得分:6)
EOF
不是一个字符,甚至不是CTRL-D - 这只是在交互式输入上指示EOF的常用终端方法。所以你不能使用工具来翻译字符以某种方式修改它。
对于这个简单的情况,最简单的方式是停止担心尝试在单个cat
中执行此操作: - )
cat f1; echo; cat f2; echo; cat f3
就可以了。任何大量的文件都可能值得一个脚本,但我看不出这个小案例的必要性。
如果要将所有这些流组合起来进行进一步处理,只需在子shell中运行它们:
( cat f1; echo; cat f2; echo; cat f3 ) | some_process
答案 2 :(得分:6)
只要您cat
文件,它们之间就没有EOF,也没有其他方法可以找到边框,所以我建议使用for file in f1 f2 f3; do cat $file; echo; done
或者缩进,
for file in f1 f2 f3; do
cat $file;
echo;
done
答案 3 :(得分:1)
我遇到了类似的问题,对我来说最有效的是我的情况是:
grep "" file1 file2 file3 | awk -F ':' '{print $2}'
答案 4 :(得分:-2)
试试这个:
find f1 f2 f3 | xargs cat