'cut' 명령을 사용하여 동일한 순차 구분 기호를 하나로 처리하려면 어떻게 해야 합니까?
열 기반 '스페이스' 조정 텍스트 스트림에서 특정 필드(4번째)를 추출하려고 합니다.지금 있어요.cut
cat text.txt | cut -d " " -f 4
★★★★★★★★★★★★★★★★★★★.cut에서는 여러 개의 공백이 하나의 딜리미터로 처리되지 않습니다.awkawk를 통해
awk '{ printf $4; }'
또는 sed
sed -E "s/[[:space:]]+/ /g"
할 수 , 해야 할지 cut여러 개의 구분 기호를 사용할 수 있습니까?
시험:
tr -s ' ' <text.txt | cut -d ' ' -f4
서 tr 페이지 man "display" :
-s, --syslog-syslog는 반복되는 문자의 각 입력 시퀀스를 바꿉니다.SET1에 1회만 리스트 되어 있습니다.그런 성격의
처럼, ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★」awk정말 좋은 방법이에요.「」를 cut 할 수 있다tr -s케브의 대답처럼 공간을 비집고 들어가죠
하지만 미래의 독자들을 위해 가능한 모든 조합을 살펴보도록 하겠습니다.자세한 내용은 테스트 섹션을 참조하십시오.
tr | 절단
tr -s ' ' < file | cut -d' ' -f4
아악
awk '{print $4}' file
때리다
while read -r _ _ _ myfield _
do
echo "forth field: $myfield"
done < file
sed의
sed -r 's/^([^ ]*[ ]*){3}([^ ]*).*/\2/' file
테스트
이 파일을 사용하여 다음 명령을 테스트합니다.
$ cat a
this is line 1 more text
this is line 2 more text
this is line 3 more text
this is line 4 more text
tr | 절단
$ cut -d' ' -f4 a
is
# it does not show what we want!
$ tr -s ' ' < a | cut -d' ' -f4
1
2 # this makes it!
3
4
$
아악
$ awk '{print $4}' a
1
2
3
4
때리다
그러면 필드가 순차적으로 읽힙니다.「」를 사용해 ._이러한 필드를 무시하기 위한 "변수"로서 이 변수가 일회용 변수임을 나타냅니다. 해서 ★★★★★★★★★★★★★★★★★★★★★★★.$myfield을 사용하다이 필드 사이에 공백이 있는 경우에도 마찬가지입니다.
$ while read -r _ _ _ a _; do echo "4th field: $a"; done < a
4th field: 1
4th field: 2
4th field: 3
4th field: 4
sed의
하면 되며 공백은 .([^ ]*[ ]*){3}다음에 네 으로 4번째 칸으로 가 됩니다.\1.
$ sed -r 's/^([^ ]*[ ]*){3}([^ ]*).*/\2/' a
1
2
3
4
최단/최적의 해결책
ofationsationsationsationsationsationsationsationsations의 제약이 너무 된 후cut나는 스테로이드 복용을 줄여야 한다고 주장한 내 후임자를 직접 썼다.
절단하다는 이 문제와 관련된 많은 cut/contract 문제에 대한 가장 미니멀리즘적인 해결책을 제공합니다.
많은 예 중에서, 이 특정 질문에 대처하는 것은 다음과 같습니다.
$ cat text.txt
0 1 2 3
0 1 2 3 4
$ cuts 2 text.txt
2
2
cuts 는 다음을 지원합니다.
- 파일에서 가장 일반적인 필드 구분자 자동 삭제(+ 기본값 재정의 기능)
- multi-char, mixed-char 및 regex 일치 구분자
- 여러 파일에서 혼합 구분 기호를 사용하여 열 추출
- 라인 시작과 더불어 라인 끝에서 오프셋(음수 사용)
- (「」를 호출할 )
paste별매) - 필드 순서 변경 지원
- 사용자가 개인 설정을 변경할 수 있는 설정 파일
- 사용자 친화성에 중점을 두고 최소한의 입력만 필요
훨씬 더 많이요.어느 것도 표준 사양이 아닙니다.cut.
참고 항목: https://stackoverflow.com/a/24543231/1296044
소스 및 문서 (무료 소프트웨어): http://arielf.github.io/cuts/
다음 Perl 원라이너에서는 Perl이 awk와 얼마나 밀접하게 관련되어 있는지를 보여 줍니다.
perl -lane 'print $F[3]' text.txt
하지만, 그@F자동 플릿 배열이 인덱스에서 시작됩니다.$F[0]awk 필드가 로 시작되는 동안$1
버전 포함cut나도 알아, 아니, 이건 불가능해 cut는 주로 구분자가 공백이 아닌 파일을 해석할 때 유용합니다(예:/etc/passwd필드 수가 고정되어 있습니다.두 개의 구분자가 연속되어 있으면 빈 필드를 의미하며, 공백에도 해당됩니다.
언급URL : https://stackoverflow.com/questions/4143252/how-to-make-the-cut-command-treat-same-sequental-delimiters-as-one
'programing' 카테고리의 다른 글
| Bash를 사용하여 명령어의 모든 출력을 억제하려면 어떻게 해야 합니까? (0) | 2023.04.10 |
|---|---|
| 여러 개의 (excel) 파일을 R로 읽으려면 어떻게 해야 합니까? (0) | 2023.04.10 |
| 외부 데이터 로드 시 콘솔에 XHR 로드가 완료되었습니다. (0) | 2023.04.05 |
| 카트가 비어 있는 경우 카트 페이지는 WooCommerce의 숍 페이지로 리다이렉트됩니까? (0) | 2023.04.05 |
| Oracle pl-sql 이스케이프 문자(" " "의 경우) (0) | 2023.04.05 |