我有一个包含文件列表的文本文件。我想将cat
他们的内容放在一起。做这个的最好方式是什么?我正在做这样的事情,但似乎过于复杂:
let count=0
while read -r LINE
do
[[ "$line" =~ ^#.*$ ]] && continue
if [ $count -ne 0 ] ; then
file="$LINE"
while read PLINE
do
echo $PLINE | cat - myfilejs > /tmp/out && mv /tmp/out myfile.js
done < $file
fi
let count++
done < tmp
我正在跳过评论行并遇到问题。必须有更好的方法来做到这一点,没有两个循环。谢谢!
答案 0 :(得分:11)
或者在简单的命令中
cat $(grep -v '^#' files) > output
答案 1 :(得分:5)
#!/bin/bash
files=()
while read; do
case "$REPLY" in
\#*|'') continue;;
*) files+=( "$REPLY" );;
esac
done < input
cat "${files[@]}"
这种方法更好的是:
cat
仅执行一次。答案 2 :(得分:3)
{
while read file
do
#process comments here with continue
cat "$file"
done
} < tmp > newfile
答案 3 :(得分:1)
cat $(cat listoffiles) | grep -v "^#"
怎么样?
答案 4 :(得分:1)
<强> xargs
强>
printf 'a\nb\n' > files
printf '12\n3\n' > a
printf '4\n56\n' > b
xargs cat < files
输出:
12
3
4
56
相关:How to pipe list of files returned by find command to cat to view all the files
答案 5 :(得分:0)
我最终得到了这个:
sed '/^$/d;/^#/d;s/^/cat "/;s/$/";/' files | sh > output
步骤:
sed 删除空行&amp;从文件中注释掉了行。
sed 然后将cat "
和";
中的每一行换行。
然后将脚本传送到 sh ,然后输入输出。