庆典猫多个文件(bash cat multiple files)

2019-06-27 04:18发布

我想cat三个文件,并获得并插入一个换行符\n每个文件后,我想用类似的:

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

没有成功。

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

Answer 1:

cat f1 <(echo) f2 <(echo) f3 <(echo) 

要么

perl -pe 'eof&&s/$/\n/' a b c


Answer 2:

只要你cat的文件,会出现在它们之间没有EOF,并没有其他的方式找到边界,所以我建议像for file in f1 f2 f3; do cat $file; echo; done for file in f1 f2 f3; do cat $file; echo; done for file in f1 f2 f3; do cat $file; echo; done或者,有压痕,

for file in f1 f2 f3; do
    cat $file;
    echo;
done


Answer 3:

EOF 是不是一个字符,而不是连CTRL-d -这只是用于指示在交互式输入EOF通常的终端方法。 所以你不能使用工具进行转换的字符以某种方式修改它。

对于这个简单的情况下, 最简单的方法就是停止担心试图做它在一个单一的cat :-)

cat f1; echo; cat f2; echo; cat f3

会做的伎俩就好了。 文件的任何较大的数量可能是值得的脚本,但我不能看到这个小案例的必要性。

如果你想所有这些流合并进行进一步的处理,只是在子shell中运行它们:

( cat f1; echo; cat f2; echo; cat f3 ) | some_process


Answer 4:

我有一个类似的问题,什么工作最适合我,我我的情况是:

grep "" file1 file2 file3 | awk -F ':' '{print $2}'


Answer 5:

试试这个:

find f1 f2 f3 | xargs cat


文章来源: bash cat multiple files