출력의 두 가지 특정 내용을 파악하는 것이 가능합니까?

출력의 두 가지 특정 내용을 파악하는 것이 가능합니까?

실행 중인 토렌트 목록을 보기 위해 Transmission-remote를 사용하고 있습니다.

transmission-remote -l다음 결과를 사용하는 경우:

ID  Done    Have  ETA     Up    Down  Ratio Status Name

1   100%    10GB  Done    0.0   0.0   0.0   Idle   Torrent

Sum: 15.91 GB    0.0     0.0

토렌트의 비율과 이름을 알 수 있나요?

현재 나는 다음을 가지고 있습니다 : transmission-remote -l | grep -o -P '.{0,3}%'

이 반환됩니다100%

답변1

grep으로 이 작업을 수행하는 방법을 잘 모르겠지만 간단한 해결책이 있습니다 awk.

목록의 첫 번째 토렌트에서만 작동합니다.

transmission-remote -l | awk '{if (NR == 3) {print $2, $9}} '

모든 시드에 대해(각 시드 앞에 빈 줄이 있으면 true가 아닌 경우 i += 2교체 i++):

transmission-remote -l | awk '{lines[NR]=$2 " " $9} END {for (i = 3; i < NR; i += 2) print lines[i]} '

두 번째 경우에는 행을 배열에 넣고 입력을 읽는 동안 for 루프를 사용하여 인쇄합니다.

답변2

head -n 3 | tail -n 1 | 
sed -re 's/[[:blank:]]+/\t/g' | 
cut -f 2,9

이는 다음을 수행합니다.

  • 3개의 레코드(행) 선택
  • 공백을 단일 탭으로 변환(전처리 잘라내기)
  • 필드 2와 9를 선택하세요.

cut그 자체로는 충분히 강력하지 않기 때문에 머리와 꼬리를 사용하여 스레드(특별한 것은 아닌 것 같음 grep)를 선택한 다음 sed준비를 전처리하는 간단한 방법을 사용합니다 cut.

관련 정보