如何一次性使用剪切和粘贴

时间:2013-07-31 23:09:42

标签: unix paste cut

我试图在同一命令行中使用剪切和粘贴但不知何故它不起作用。 我有两个文件,fileA和fileB。

fileA
a b
c d


fileB
1 2 3 4
5 6 7 8

我想剪切fileB的第二和第三列。我通过以下命令执行此操作。

cut -f 2-3 fileB

然后在此前面,我想粘贴fileA

中的列
paste fileA | cut -f 2-3 fileB > myNewFile

所以myNewFile看起来像

a b 2 3
c d 6 7

我可以用两行来完成。

cut -f 2-3 fileB > part1
paste fileA part1 > myNewFile

但相反,我想一气呵成。类似于

的东西
paste fileA | cut -f 2-3 fileB > myNewFile

哪个不起作用。它只打印剪切命令,不对粘贴做任何事情。如何在一个命令中完成这项工作?

感谢。

3 个答案:

答案 0 :(得分:3)

解决方案1:

paste fileA <(cut -f 2-3 fileB) > myNewFile

解决方案2:

paste fileA fileB | cut -f1-2,4-5

答案 1 :(得分:2)

听起来您可能想要joinpaste命令。

使用paste连接所有列的示例,然后从http://hintsforums.macworld.com/showthread.php?t=16618获取的一些列操作命令来过滤所需的列,如下所示:

$ cat foo
x1 y1
a1 b1
c1 d1
e1 f1

$ cat goo
x2 y2
a2 b2
c2 d2
e2 f2

$ paste foo goo
x1 y1   x2 y2
a1 b1   a2 b2
c1 d1   c2 d2
e1 f1   e2 f2

$ paste foo goo | column -t
x1  y1  x2  y2
a1  b1  a2  b2
c1  d1  c2  d2
e1  f1  e2  f2

$ paste foo goo | column -t | colrm 9 12
x1  y1  y2
a1  b1  b2
c1  d1  d2
e1  f1  f2

答案 2 :(得分:0)

试试这个

 paste fileA fileB | column -t | awk -F' ' '{print $1" "$2" "$4" "$5}'

或者

 paste fileA fileB | column -s' ' -t | sed 's/ \+ /\t/g' | sed 's/\t/ /g' | cut -d' ' -f1-2,4-5