我正在尝试获取文件在另一个文本文件中写入的文件内容
我的节目是:
for i in $(cat FILE)
do
echo $i
done
我希望结果是
OBJECT1
OBJECT2
LINE1
LINE2
但结果只是
aa
bb
该程序未读取 aa 和 bb
的内容文件名和内容如下:
文件:
aa
bb
AA
OBJECT1
OBJECT2
BB
LINE1
LINE2
答案 0 :(得分:3)
以下是我认为您要做的事情。
假设:
$ cat FILE
aa
bb
$ cat aa
OBJECT1
OBJECT2
$ cat bb
LINE1
LINE2
你可以这样做:
$ while IFS= read -r fn || [[ -n $fn ]]; do cat "$fn"; done <FILE
OBJECT1
OBJECT2
LINE1
LINE2
说明:
<FILE
读取文件FILE
并将内容重定向到while循环while IFS= read -r fn; do ... done
定义while loop。将CR终止的每一行的文件读入fn
。前导和尾随空格的IFS=
prevents the trimming。 -r
选项可防止反斜杠解释。|| [[ -n $fn ]]
的最后一行未以FILE
终止,则\n
返回true以使循环继续。如果知道您的文件已终止,则不需要此部分。 cat "$fn"
使用引用的文件名“$ fn”运行程序cat
。如果存在诸如“big file.txt”答案 1 :(得分:0)
while read LINE; do
cat "$LINE"
done <FILE
应该工作得很好。所有$(cat)
版本都使用子shell来执行外部命令(cat
),这至少不是最佳的。上面使用纯bash循环遍历FILE的每一行,并cat
读取文件。
答案 2 :(得分:-1)
试试这个:
for i in $(cat FILE)
do
for e in $(cat "$i")
do
echo "$e"
done
done
我认为这就是你想要的。