我只想粘贴终端内的第三列数据。
我最初有类似的东西:
4 SF0086 SF0086
12 SF0087 SF0087
17 TSF141 TSF141
29 TSF070 TSF070
30 TSF028 TSF028
31 TSF122 TSF122
我将其复制并粘贴到终端中,它变成一行
4 SF0086 SF0086 12 SF0087 SF0087 17 TSF141 TSF141 29 TSF070 TSF070 30 TSF028 TSF028 31 TSF122 TSF122
我想得到它像:
SF0086
SF0087
TSF141
TSF070
TSF028
TSF122
我可以将一行(中间)选项保存为一个文件,然后使用类似awk
,sed
或perl
或通用 POSIX 系统中可用的任何选项,但还没有弄清楚。我对这个命令也没有运气paste
,我得出的结论paste
是无法为我做到这一点。每次我需要提取第三列时,数据都会发生变化(意味着间距会发生变化)。有数据提取器/格式化大师吗?
答案1
'cut' 是您正在寻找的命令。您指定要使用的分隔符(我相信空格是默认值)以及您想要的列。手册页将列出所有详细信息。
您必须确保粘贴时其换行符完好无损,才能正常工作。
答案2
对我来说最有效的方法是,因为我总是有重复项,编号(-f 字段)总是会改变,而且我的列表可能有数百个字段长,但事实cut
证明这并不是一个有效的选择。
这就是我想要的结果:
sed -e 's/\s\+/\n/g' data.txt > data_cr.txt && sort data_cr.txt | uniq -d > final.txt
在哪里:
sed -e 's/\s\+/\n/g' data.txt > data_cr.txt
强制所有文本(以空格分隔)独占一行,并将其写入新文件 data_cr.txt...并且
sort data_cr.txt | uniq -d > final.txt
逐行获取数据并仅打印任何重复项的单个副本。