bash cat多个文件

时间:2012-08-20 12:27:19

标签: linux bash shell cat

我正在尝试cat三个文件并获取并插入换行符\n 在每个文件之后,我想到使用类似的东西:

cat f1 f2 f3|tr "\EOF" "\n"

没有成功。

实现这一目标的最简单方法是什么?

5 个答案:

答案 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