bash cat多个文件

Luc*_*che 10 linux bash shell cat

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

cat f1 f2 f3|tr "\EOF" "\n"
Run Code Online (Sandbox Code Playgroud)

没有成功.

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

Nah*_*eul 23

cat f1 <(echo) f2 <(echo) f3 <(echo) 
Run Code Online (Sandbox Code Playgroud)

要么

perl -pe 'eof&&s/$/\n/' a b c
Run Code Online (Sandbox Code Playgroud)

  • '<(echo)`成语的+1.不知何故,我错过了十多年的bash脚本! (6认同)
  • 为什么这样做?`<(echo)`代表什么? (2认同)

pax*_*blo 6

EOF 不是一个字符,甚至不是CTRL-D - 这只是在交互式输入上指示EOF的常用终端方法.所以你不能使用工具来翻译字符以某种方式修改它.

对于这个简单的案例,最简单的方法是不要担心尝试单独执行cat:-)

cat f1; echo; cat f2; echo; cat f3
Run Code Online (Sandbox Code Playgroud)

会做的很好.任何大量的文件都可能值得一个脚本,但我看不出这个小案例的必要性.

如果要将所有这些流组合起来进行进一步处理,只需在子shell中运行它们:

( cat f1; echo; cat f2; echo; cat f3 ) | some_process
Run Code Online (Sandbox Code Playgroud)


Qna*_*nan 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
Run Code Online (Sandbox Code Playgroud)