档案一:
1
3
5
7
文件 B:
2
4
6
8
是否可以在 shell 脚本中使用文件 A 和文件 B 作为输入,并获得文件 C 的输出,其内容如下:
1
2
3
4
5
6
7
8
用于paste
按照找到的确切顺序交错行:
paste -d '\n' filea fileb
或用于sort
合并和排序文件:
sort filea fileb
简单地:
sort -n FileA FileB > FileC
给出:
1
2
3
4
5
6
7
8
$ cat > filea
1
3
5
7
$ cat > fileb
2
4
6
8
$ sort -m filea fileb
1
2
3
4
5
6
7
8
$
只是为了说清楚...在每个数字列表的末尾按 ctrl D 以设置 filea 和 fileb。谢谢凯文
既然你说你想要一个 shell 解决方案,
#!/bin/bash
if [ $# -ne 2 ] ; then
echo 'usage: interleave filea fileb >out' >&2
exit 1
fi
exec 3<"$1"
exec 4<"$2"
read -u 3 line_a
ok_a=$?
read -u 4 line_b
ok_b=$?
while [ $ok_a -eq 0 -a $ok_b -eq 0 ] ; do
echo "$line_a"
echo "$line_b"
read -u 3 line_a
ok_a=$?
read -u 4 line_b
ok_b=$?
done
if [ $ok_a -ne 0 -o $ok_b -ne 0 ] ; then
echo 'Error: Inputs differ in length' >&2
exit 1
fi
如果要将第二个文件内容附加到第一个文件的末尾。
cat file1.txt file2.txt > file3.txt