Cut을 사용하여 특수 구분 기호로 구분된 특정 열을 출력하는 방법

Cut을 사용하여 특수 구분 기호로 구분된 특정 열을 출력하는 방법

다음과 같이 특수 구분 기호로 구분된 여러 문자를 포함하는 여러 열이 포함된 파일이 있습니다 <xx>.

한 줄은 다음과 같습니다.

firststring<xx>11<xx>thirdstring/<xx>22<xx>00<xx>00<xx><xx><xx><xx>-1<xx>-1<xx>1

일부 열에는 아무것도 포함되어 있지 않으므로 다음과 같은 일부 열이 있습니다.<xx><xx>

모든 행의 8열과 9열을 인쇄해야 합니다. 어떻게 해야 하나요? 이 명령을 시도했지만 아무것도 인쇄되지 않았습니다.

cat myfile.txt | cut -d '<xx>' -f8,9
cut: the delimiter must be a single character
Try 'cut --help' for more information.

답변1

최대구현에서는 awk다중 문자 필드 구분 기호를 허용합니다. 따라서 다음을 시도해 볼 수 있습니다.

awk -F'<xx>' '{print $8,$9}' myfile.txt

원래 구분 기호를 유지하려면 다음을 설정해야 합니다.출력 필드 구분 기호 OFS그리고 예를 들어

awk -F'<xx>' 'BEGIN{OFS=FS} {print $8,$9}' myfile.txt

아니면, 있어요밀러cut-와 같은 구문을 원하는 경우 :

mlr --nidx --ifs '<xx>' cut -f 8,9 myfile.txt

또는 맞춤 구분 기호를 유지하세요.

mlr --nidx --fs '<xx>' cut -f 8,9 myfile.txt

관련 정보