簡體   English   中英

bash貓多檔

[英]bash cat multiple files

我正在嘗試對cat文件進行分類,並在每個文件之后獲取並插入換行符\n ,我想使用類似的東西:

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

沒有成功。

實現這一目標的最簡單方法是什么?

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

或者

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

只要你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

EOF不是字符,甚至不是 CTRL-D - 這只是在交互式輸入中指示 EOF 的常用終端方法。 所以你不能使用翻譯字符的工具來修改它。

對於這個簡單的案例,最簡單的方法是不要擔心嘗試用cat來做這件事:-)

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

會做得很好。 任何更大數量的文件都值得編寫腳本,但我看不出這個小案例的必要性。

如果您想合並所有這些流以進行進一步處理,只需在子 shell 中運行它們:

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

我遇到了類似的問題,對我來說最有效的方法是:

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

如果您不只使用cat工具,請使用bat https://github.com/sharkdp/bat

bat -p file1 file2 file3

此外,如果您有動態文件數,可以使用通配符:

bat -p *.extension

嘗試這個:

find f1 f2 f3 | xargs cat

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM