이 샘플의 마지막 열을 얻고 싶습니다.
[ 3] 1.0- 2.0 sec 1.00 MBytes 8.39 Mbits/sec
[ 3] 2.0- 3.0 sec 768 KBytes 6.29 Mbits/sec
[ 3] 3.0- 4.0 sec 512 KBytes 4.19 Mbits/sec
[ 3] 4.0- 5.0 sec 256 KBytes 2.10 Mbits/sec
...
내가 사용하면
cut -d\ -f 13
나는 얻다
Mbits/sec
6.29
4.19
2.10
때로는 사이에 추가 공백이 있기 때문입니다.
답변
말 그대로 질문에 대답하려면 :
sed 's/ */:/g' | cut -d : -f 5
또는
awk -F ' +' '{print $5}'
그러나 괄호 안의 숫자가 10 등에 도달하면 그렇지 않습니다. 숫자에만 관심이 있다면 다른 모든 것을 제거 할 수 있습니다.
sed 's/[^.0-9][^.0-9]*/:/g' | cut -d : -f 6
답변
squeeze 옵션 ( flag) tr
과 함께 command를 사용 하여 여러 연속 된 모든 공백을 단일 공백으로 변환 한 다음 공백으로 구분 기호로 작업을 수행하면 숫자가있는 필수 열에 액세스 할 수 있습니다.-s
cut
아래 코드 스니핑을 참조하십시오.
cat file | tr -s ' ' | cut -d ' ' -f 8
답변
이 명령은 모두 공백으로 구분 된 파일의 마지막 열을 인쇄합니다.
-
awk '{print $NF}' file
에서
awk
,NF
필드의 수이고$NF
마지막 필드입니다. -
perl -lane 'print $F[$#F]' file
-a
배열에 공백의 파일로 분할@F
,$#F
배열의 요소 수가 매우이다$F[$#F]
마지막 요소이다.-n
수단은 명령 행에 지정된 파일을 읽고 함께 전달 된 스크립트 적용-e
각 라인을. 각 문장에-l
개행 문자 (\n
)를 추가하기 만하면print
됩니다. -
sed 's/.* //g'
모든 것을 마지막 공백과 일치시키고 삭제하고 마지막 열만 남기는 간단한 정규식.
-
rev file | cut -d' ' -f 1 | rev
rev
마지막 필드가 첫 번째 필드가되도록 출력을 반대로하고,cut
인쇄 할 공간과rev
텍스트를 다시 정상으로 되돌릴 공간이 있습니다 . 연속 공백이 있으면 작동하지 않습니다 .
입력 내용에 따라 실제로 마지막 열은 원하지 않지만 두 번째 열은 두 번째 열을 원한다고 생각합니다. 이 경우 다음을 사용하여 마지막 2 ( 8.39 Mbits/sec
) 를 인쇄하십시오 .
awk '{print $(NF-1),$NF}' file
perl -lane 'print "$F[$#F-1] $F[$#F]"' file
sed 's/.* \(.* .*\)/\1/' file
rev file | cut -d' ' -f 1,2 | rev
그리고 이들은 두 번째 ( 8.39
) 를 인쇄합니다 .
awk '{print $(NF-1)}' file
perl -lane 'print $F[$#F-1]' file
sed 's/.* \(.*\) .*/\1/' file
rev file | cut -d' ' -f 2 | rev
답변
cut
수동 으로 공백을 여러 번 사용하여 분리 할 수 없습니다 .
출력 필드는 한 번의 필드 분리 문자 문자로 구분됩니다.
텍스트가 같은 양으로 분리되거나 tr
초과 텍스트 를 제거하는 데 사용하지 않는 한 .
그렇지 않으면 같은 다른 도구를 사용 awk
, sed
또는 ex
.
예를 들면 다음과 같습니다.
ex -s +'%norm $2Bd0' +%p +q! foo.txt
교체 +q!
로하면 -cwq
현재 위치에서 변경 사항을 저장합니다.
답변
펄 원 라이너를 다음과 같이 사용하십시오.
perl -lane 'print $F[-2]' input_file
설명:
옵션 -e
은 perl 인터프리터가 파일이 아닌 스크립트를 인라인으로 찾도록합니다.
옵션 -n
은 입력 (파이프의 파일 또는 STDIN)을 한 줄씩 읽습니다.
옵션 -l
은 행을 읽은 후 입력 레코드 구분 기호 (OS에 따라, UNIX에서는 기본적으로 줄 바꿈)를 제거하고 끝에 모든 행을 추가합니다.print
옵션 -a
배열 공백에 분할하기 위해 각 입력 라인이 발생 @F
하고, $F[-2]
원하는 필드 단부로부터 제 2 엘리먼트 계수이다. 배열의 마지막 인덱스 인 $F[$#F-1]
where를 사용할 수도 있습니다 .$#F
@F