Grep 명령은 파일에서 매개변수 값을 추출합니다.

Grep 명령은 파일에서 매개변수 값을 추출합니다.

저는 UNIX를 처음 접했고 grep 명령에 대한 도움이 필요합니다.

7개의 매개변수 값 S1, S2..., S7이 포함된 출력 파일이 있습니다. grep 명령을 사용하여 값만 추출하고 나중에 플롯할 새 파일에 배열로 쓰려면 어떻게 해야 합니까?

<<<<< Function evaluation summary (APPROX_INTERFACE_1): 1808 total (1808 new, 0 duplicate)
<<<<< Best parameters          =
                      3.3500000000e+02 S1
                      1.0357218750e+00 S2
                      7.2046250000e+01 S3
                      7.2872921875e+01 S4
                      5.7405507812e+01 S5
                      5.0000054687e+01 S6
                      2.3999984375e+02 S7
<<<<< Best objective function  =
                      8.0674284316e-01

답변1

Grep은 행 선택 도구입니다.

grep ' S.$' your.txt 

7개의 값이 포함된 행이 제공됩니다.

각 행의 값을 잘라야 하는 경우 cut을 사용할 수 있습니다.

grep ' S.$' yout.txt |cut -d ' '  -f23

각 줄의 시작 부분에 공백이 22개 있으면 23을 사용합니다.

AWK는 grep 및 cut을 대체할 수 있는 좋은 방법입니다.

답변2

우리가 원하는 것이 두 번째 필드가 S각 행의 첫 번째 필드이고 뒤에 숫자가 오는 것이라고 확신할 수 있다면 다음과 같이 할 수 있습니다.

$ awk '$2~/^S[0-9]$/{print $1}' data
3.3500000000e+02
1.0357218750e+00
7.2046250000e+01
7.2872921875e+01
5.7405507812e+01
5.0000054687e+01
2.3999984375e+02

배열의 값으로 사용하려면 다음을 수행하십시오.

array=( $(awk '$2~/^S[0-9]$/{print $1}' data) )

새 파일에 넣으려면 다음을 수행하십시오.

awk '$2~/^S[0-9]$/{print $1}' data > new.data

관련 정보