档案A:
1
3
5
7
档案B:
2
4
6
8
是否可以在shell脚本中使用文件A和文件B作为输入,并获得文件C的输出,其内容如下:
1
2
3
4
5
6
7
8
答案 0 :(得分:10)
使用paste
按照找到的确切顺序交错行:
paste -d '\n' filea fileb
或使用sort
对文件进行组合和排序:
sort filea fileb
答案 1 :(得分:4)
简单地:
sort -n FileA FileB > FileC
给出:
1
2
3
4
5
6
7
8
答案 2 :(得分:2)
$ 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。谢谢凯文
答案 3 :(得分:1)
既然你说你想要一个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
答案 4 :(得分:0)
如果要将第二个文件的内容附加在第一个文件的末尾。
cat file1.txt file2.txt > file3.txt