awk를 사용하여 공백으로 구분 된 입력 텍스트 파일을 구문 분석하려고합니다. 열 코드는 각 그룹에 대해 둘 이상의 행을 가질 수 있습니다. 나는 이것에 어떤 도움을 주셔서 감사합니다.awk를 사용하여 큰 테스트 파일을 구문 분석합니다.
입력 파일 :
TR 1
Action
Success/Failure
8.1.1.1 RunOne 80 48
8.1.1.2 RunTwo 80 49
8.1.1.3 RunThree 100 100
8.1.1.4 RunFour 20 19
8.1.1.5 RunFive 20 20
Action Time 16:47:42
Action2
Success/Failure
8.1.2.1 RunSix 80 49
8.1.2.2 RunSeven 80 80
8.1.2.3 RunEight 80 80
Action2 Time 03:26:31
TR 2
Action
Success/Failure
8.1.1.1 RunOne 80 48
8.1.1.2 RunTwo 80 49
8.1.1.3 RunThree 100 100
8.1.1.4 RunFour 20 19
8.1.1.5 RunFive 20 20
Action Time 16:47:42
Action2
Success/Failure
8.1.2.1 RunSix 80 49
8.1.2.2 RunSeven 80 80
8.1.2.3 RunEight 80 80
Action2 Time 03:26:31
원하는 출력 파일
------------------
s.no Runno Runname val1 val2 %val1&val2
1. 8.1.1.1 Runone 160 96 % #val1 and Val2 should display as sum of TR1&TR2
2. 8.1.1.2 Runtwo 160 98
3. 8.1.1.3 Runthree 200 200
4. 8.1.1.4 RunFour 40 38
.......
및 각 TR 1 (을 TestRun)에서 각 Runname의 발생
코드는 아래의 어떤을 찾을
#!/usr/bin/awk -f
BEGIN {
# You can customize this to change your output layout based on your preference.
format = "%-10s%-7s%-5s%-8s\n”
printf format, “Runno”, “Runname”, “Val1”, “Val2”
}
++i==2{
l = $1
}
i>100{
if (/^[[:blank:]]*$/) {
i = 0
} else if (NF > 1) {
printf format, l, $1, $2, $3, $4, $5
p1=$1; p2=$2; p3=$3; p5=$5
} else {
printf format, l, p1, p2, p3, $1, p5
}
}
무엇을하려하십니까? 원하는 입력에 도달하기위한 요구 사항은 무엇입니까? 8.1.1.X 만있는 이유는 무엇입니까? –
안녕하세요, 이것은 테스트 중 하나에 대한 출력 파일입니다. 파일에는 다른 반복 (TR 1과 TR 2 ...)이 있습니다. 파일을 구문 분석하고 각 반복에 대한 Runno, Runname의 총 수를 표시해야합니다. Runno는 각 반복마다 여러 번 반복 될 수 있습니다. Runno 8.1.1.X에서만 시작됩니다. 위에서 설명한 것처럼 파일을 분할/구문 분석하고 표 형식의 열로 표시해야합니다. – user3745740
에코 "번호 입력 :" n1 awk '/^$/{ca = ""; cp = ""}/^ #/{ca = ca ""$ 0}/^ $ n1/&& ca {cp = ca; 입력에서 값을 얻는 방법을 제안하십시오. – user3745740