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

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

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

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

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일반 perlPOSIX 시스템에서 사용 가능한 모든 것이 옵션이지만 아직 파악하지 못했습니다. 나는 또한 명령에 운이 없었고 결론적 으로는 나를 위해 그것을 할 수 없을 것이라고 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

한 줄씩 데이터를 가져와 중복 항목의 단일 복사본만 인쇄합니다.

관련 정보