在終端機中貼上特定列的方法

在終端機中貼上特定列的方法

我只想貼上終端內的第三列資料。

我最初有類似的東西:

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,sedperl或通用 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

逐行取得資料並僅列印任何重複項的單一副本。

相關內容