bash cat multiple files

2019-02-09 02:36发布

I am trying to cat three files and obtain and insert a newline \n after each file ,I thought of using something like :

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

without success.

What is the easiest way to achieve that ?

5条回答
兄弟一词,经得起流年.
2楼-- · 2019-02-09 02:44
cat f1 <(echo) f2 <(echo) f3 <(echo) 

or

perl -pe 'eof&&s/$/\n/' a b c
查看更多
Anthone
3楼-- · 2019-02-09 02:45

Try this:

find f1 f2 f3 | xargs cat
查看更多
太酷不给撩
4楼-- · 2019-02-09 02:47

As soon as you cat the files, there will be no EOF in between them, and no other way to find the border, so I'd suggest something like for file in f1 f2 f3; do cat $file; echo; done or, with indentation,

for file in f1 f2 f3; do
    cat $file;
    echo;
done
查看更多
smile是对你的礼貌
5楼-- · 2019-02-09 02:59

EOF isn't a character, not even CTRL-D - that's just the usual terminal method for indicating EOF on interactive input. So you can't use tools for translating characters to somehow modify it.

For this simple case, the easiest way is to stop worrying about trying to do it in a single cat :-)

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

will do the trick just fine. Any larger number of files may be worthy of a script but I can't see the necessity for this small case.

If you want to combine all those streams for further processing, simply run them in a subshell:

( cat f1; echo; cat f2; echo; cat f3 ) | some_process
查看更多
Juvenile、少年°
6楼-- · 2019-02-09 03:04

i was having a similar problem, what worked best for me i my situation was:

grep "" file1 file2 file3 | awk -F ':' '{print $2}'
查看更多
登录 后发表回答