3

档案一:

1
3
5
7

文件 B:

2
4
6
8

是否可以在 shell 脚本中使用文件 A 和文件 B 作为输入,并获得文件 C 的输出,其内容如下:

1
2
3
4
5
6
7
8  
4

5 回答 5

10

用于paste按照找到的确切顺序交错行:

paste -d '\n' filea fileb

或用于sort合并和排序文件:

sort filea fileb
于 2013-09-03T15:53:34.867 回答
4

简单地:

sort -n FileA FileB > FileC

给出:

1
2
3
4
5
6
7
8
于 2013-09-03T15:52:59.577 回答
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。谢谢凯文

于 2013-09-03T15:56:23.693 回答
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
于 2013-09-03T16:22:39.333 回答
0

如果要将第二个文件内容附加到第一个文件的末尾。

cat file1.txt file2.txt > file3.txt 
于 2020-07-03T13:53:29.327 回答