如何一次从1个文件中读取2个文件?假设我的file1和file2包含以下内容:
文件1:
line1.a
line2.a
line3.a
file2的:
line1.b
line2.b
line3.b
如何获得这样的输出 -
line1.a
line1.b
line2.a
line2.b
line3.a
line3.b
...
...
答案 0 :(得分:29)
您可以通过纯bash
方式或使用名为paste
的工具来执行此操作:
您的文件:
[jaypal:~/Temp] cat file1
line1.a
line2.a
line3.a
line4.a
[jaypal:~/Temp] cat file2
line1.b
line2.b
line3.b
line4.b
<& 3告诉bash读取描述符3中的文件。您将意识到Stdin,Stdout和Stderr使用0,1和2描述符。所以我们应该避免使用它们。此外,9之后的描述符由bash内部使用,因此您可以使用3到9中的任何一个。
[jaypal:~/Temp] while read -r a && read -r b <&3; do
> echo -e "$a\n$b";
> done < file1 3<file2
line1.a
line1.b
line2.a
line2.b
line3.a
line3.b
line4.a
line4.b
[jaypal:~/Temp] paste -d"\n" file1 file2
line1.a
line1.b
line2.a
line2.b
line3.a
line3.b
line4.a
line4.b
答案 1 :(得分:3)
这可能适合你(GNU sed):
sed 'R file2' file1
答案 2 :(得分:0)
以防万一它可能对某人有帮助。实现这一点的不同方法,这里有两个简单的例子。
sed
代替 Sleep
。
1619523081232 -- sent msg # 1
1619523085287 -- no msgs received
---------------
1619523082233 -- sent msg # 2
1619523085296 -- 1 msgs received
是为了更方便阅读。i=0; k="$(wc -l file1 | awk '{print $1}')";而 [ $i -lt $k ];做 ((i++)); sed -n "$i"p file1; sed -n "$i"p file2;回声“--------------”;睡眠 1;完成
结果:
==> file1 <==
1619523081232 -- sent msg # 1
==> file2 <==
1619523085287 -- no msgs received
tail -F -n1 file1 file2
结果:
app.get("/api/levelstats", async function(request, response) {
response.setHeader('Content-Type', 'application/json');
if (!request.query.id) return response.send('null');
let data;
// change !== to != , maybe you can compare value only and ignore type data
if (request.query.id != 'all') {
// if request.query.id is not all, change type data request.query.id from string to int
data = await db.fetch('60Levelings', {
target: parseInt(request.query.id)
});
data.code = qs.parse(data.code).raw;
response.send(JSON.stringify(data));
}
else {
data = await db.fetch('60Levelings');
}