sed를 사용하여 값 얻기


0

출력이 다음과 같은 스크립트를 실행 중입니다.

Circuit                           Packets/Bytes Sent Packets/Bytes Received
2/1 vlan-id 1005                         11589119559            14650974869
                                       3084237796552         13027195853643

이 스크립트는 MRTG 목적으로 5 분마다 실행됩니다. 이제 열 2와 3에 대한 두 번째 행의 값을 별도로 가져와야합니다.

Bytes Sent 3084237796552

Bytes Received 13027195853643

sed를 사용하여 어떻게 할 수 있습니까?


2
왜 사용하고 싶 sed습니까?
Daniel Beck

답변:


1

다음을 사용하는 하나의 솔루션 sed:

sed -n '$ { s/^\s*/Bytes Sent /; s/\([0-9]\)[ ]/\1\n/; s/\(\n\)\s*/\1Bytes Received /; p }' infile

설명:

-n                               # Disable printing lines.
$                                # In last line...
s/^\s*/Bytes Sent /              # Substitute all spaces from the beginning with literal string 'Bytes Sent'
s/\([0-9]\)[ ]/\1\n/             # Substitute first match of a space after a number with a new line.
s/\(\n\)\s*/\1Bytes Received /   # Substitute all space after the new line with literal string 'Bytes received'
p                                # Print this line (two lines after the included '\n')

결과:

Bytes Sent 3084237796552
Bytes Received 13027195853643

0

나는 sed와 여러 줄의 교수형을 얻지 못했지만, 원하는 경우이 작업을 수행해야합니다.

whatever_gives_your_data.sh | tail -1 |  awk '{ print "Bytes sent "$1 "\nBytes recieved "$2 }'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.