내 파일에는 다음 줄이 포함되어 있습니다.
$BQ
{ VOL @home }
database daba
relation tcdeatid
opendb
clear
.lruno := 72 <-- (This line lruno. := 72 has 10 times in my file1)
.infno := 1
.tid.noel := 101
writedb
clear
.lruno := 72
.infno := 205
.tid.noel := 191
writedb
clear
$EOF
파일 2에서는 아래에 언급된 파일 1의 이 부분만 원합니다.
$BQ
{ VOL @home }
database daba
relation tcdeatid
opendb
clear
.lruno := 72
.infno := 1
.tid.noel := 101
.lruno := 72
.infno := 205
.tid.noel := 191
.lruno := 72
.infno := 0
.tid.noel := 1111
.lruno := 72
.infno := 56
.tid.noel := 231
.lruno := 72
.infno := 45
.tid.noel := 61
.lruno := 72
.infno := 23
.tid.noel := 901
.lruno := 72
.infno := 123
.tid.noel := 1611
.lruno := 72
.infno := 786
.tid.noel := 81
.lruno := 72
.infno := 55
.tid.noel := 1
.lruno := 72
.infno := 253
.tid.noel := 121
writedb
clear
$EOF
file1의 쉘 명령을 사용하여 이 코드 블록(lruno.:= 72)을 다른 파일에 넣고 싶습니다. 파일을 읽고 lruno의 수를 계산하는 명령을 원합니다. := 72 in file1이고 그 합계를 다른 파일에 씁니다.
답변1
sed 사용
.lruno := 72
그러면 다음에서 시작하여 계속되는 행을 선택하여 clear
요청한 출력이 생성됩니다 .
$ sed -n '/.lruno := 72/,/clear/p' file
.lruno := 72
.infno := 1
.tid.noel := 101
.tid.info := 64
.tid.setnr := 1225
.typeidm := 1
.sourcetable := 2
writedb
clear
.lruno := 72
.infno := 205
.tid.noel := 101
.tid.info := 76
.tid.setnr := 1225
.typeidm := 1
.sourcetable := 2
writedb
clear
작동 방식: -n
sed에게 요청하지 않는 한 인쇄하지 말라고 지시합니다. 로 시작하고 끝나는 /.lruno := 72/,/clear/p
모든 범위를 인쇄하도록 지시합니다 ..lruno := 72
clear
awk를 사용하세요
awk를 사용하여 동일한 접근 방식을 사용할 수도 있습니다.
awk '/.lruno := 72/,/clear/' file
sed와 마찬가지로 로 /.lruno := 72/,/clear/
시작하고 끝나는 줄 그룹이 선택됩니다. 선택한 행에 대해 지정된 작업이 없으므로 awk는 이를 인쇄하는 기본 작업을 수행합니다..lruno := 72
clear
답변2
사용 sed
:
< inputfile sed '1,6d; $d' > outputfile
< inputfile
: 콘텐츠를 's'inputfile
로 리디렉션합니다.sed
stdin
> outputfile
sed
:컨텐츠를stdout
다음으로 리디렉션합니다.outputfile
1,6d
: 첫 번째 줄부터 여섯 번째 줄까지 모두 삭제$d
: 마지막 줄 삭제
예제 출력:
~/tmp$ cat inputfile
$BQ
{ VOL @home }
database daba
relation tcdeatid
opendb
clear
.lruno := 72
.infno := 1
.tid.noel := 101
.tid.info := 64
.tid.setnr := 1225
.typeidm := 1
.sourcetable := 2
writedb
clear
.lruno := 72
.infno := 205
.tid.noel := 101
.tid.info := 76
.tid.setnr := 1225
.typeidm := 1
.sourcetable := 2
writedb
clear
.lruno := 18
.infno := 2
.tid.noel := 100
.tid.info := 34
.tid.setnr := 125
.typeidm := 9
.sourcetable := 2
writedb
clear
.lruno := 18
.infno := 25
.tid.noel := 1101
.tid.info := 71
.tid.setnr := 1425
.typeidm := 1
.sourcetable := 3
writedb
clear
$EOF
~/tmp$ < inputfile sed '1,6d; $d'
.lruno := 72
.infno := 1
.tid.noel := 101
.tid.info := 64
.tid.setnr := 1225
.typeidm := 1
.sourcetable := 2
writedb
clear
.lruno := 72
.infno := 205
.tid.noel := 101
.tid.info := 76
.tid.setnr := 1225
.typeidm := 1
.sourcetable := 2
writedb
clear
.lruno := 18
.infno := 2
.tid.noel := 100
.tid.info := 34
.tid.setnr := 125
.typeidm := 9
.sourcetable := 2
writedb
clear
.lruno := 18
.infno := 25
.tid.noel := 1101
.tid.info := 71
.tid.setnr := 1425
.typeidm := 1
.sourcetable := 3
writedb
clear
~/tmp$