2

我正在尝试在同一命令行中使用剪切和粘贴,但不知何故它不起作用。我有两个文件,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

这是行不通的。它只打印剪切命令,对粘贴不做任何事情。我怎样才能在一个命令中完成这项工作?

谢谢。

4

3 回答 3

3

解决方案1:

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

解决方案2:

paste fileA fileB | cut -f1-2,4-5
于 2014-09-17T19:15:26.173 回答
2

听起来您可能需要joinorpaste命令。

下面显示了一个用于连接所有列的示例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
于 2013-08-01T01:28:46.440 回答
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
于 2013-08-08T05:42:59.727 回答