다음과 같이 특수 구분 기호로 구분된 여러 문자를 포함하는 여러 열이 포함된 파일이 있습니다 <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