我试图在同一命令行中使用剪切和粘贴但不知何故它不起作用。 我有两个文件,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
哪个不起作用。它只打印剪切命令,不对粘贴做任何事情。如何在一个命令中完成这项工作?
感谢。
答案 0 :(得分:3)
解决方案1:
paste fileA <(cut -f 2-3 fileB) > myNewFile
解决方案2:
paste fileA fileB | cut -f1-2,4-5
答案 1 :(得分:2)
听起来您可能想要join
或paste
命令。
使用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