Метод вставки определенного столбца в терминале

Метод вставки определенного столбца в терминале

Я хотел бы вставить только третий столбец данных из терминала.

У меня изначально было что-то вроде:

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

берет данные построчно и печатает только одну копию любых дубликатов.

Связанный контент