터미널에 특정 열을 붙여넣는 방법

터미널에 특정 열을 붙여넣는 방법

터미널 내부에 데이터의 세 번째 열만 붙여넣고 싶습니다.

나는 원래 다음과 같은 것을 가지고있었습니다 :

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

옵션의 한 줄(중간)을 파일에 저장한 다음 과 같은 옵션을 사용하거나 범용 POSIX 시스템에서 사용할 수 있는 옵션을 사용할 수 있지만 awk아직 sed파악 perl하지 못했습니다. 나 역시 이 명령을 수행할 수 없으며 나에게는 이 명령을 수행할 수 없다는 paste결론에 도달했습니다 . paste세 번째 열을 추출해야 할 때마다 데이터가 변경됩니다(간격이 변경됨을 의미). 데이터 추출기/포맷터 전문가가 있나요?

답변1

'cut'은 당신이 찾고 있는 명령입니다. 사용하려는 구분 기호(기본값은 공백이라고 생각합니다)와 원하는 열을 지정합니다. 매뉴얼 페이지에는 모든 세부 사항이 나열됩니다.

이 기능이 제대로 작동하려면 붙여넣을 때 줄 바꿈이 손상되지 않았는지 확인해야 합니다.

답변2

cut나에게 가장 효과가 있었던 것은 항상 중복이 있었기 때문에 번호 매기기(-f 필드)가 항상 변경되고 내 목록이 수백 개의 필드가 될 수 있다는 것이었지만 이것이 효율적인 선택이 아니라는 것이 밝혀졌습니다 .

이것이 내가 원하는 결과입니다:

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

행별로 데이터를 가져오고 중복된 사본은 한 장만 인쇄합니다.

관련 정보