.xml 파일에 수백 개의 라이브러리가 있기 때문에(거의 16,000줄) RHEL6 시스템에서 "groupinstall"을 수행하려고 하는 .xml 파일이 있습니다.
그래서 다음 구조를 사용하여 .xml 파일에 포함된 그룹 이름을 추출하려고 합니다.
<b>
<group>
<id> group name </id>
<packages>
...
</packages>
<id> group name 2 </id>
<packages>
...
</packages>
<id> etc... </id>
</group>
</b>
기본적으로 이것이 내가 시도한 것입니다.
sed -n '/<id>/,/<\/id>/p' test1.txt > test2.txt
.xml 파일을 test1.txt에 복사했습니다. test1.txt의 그룹 이름을 test2.txt라는 두 번째 파일로 추출하려고 합니다. 그러나 위 줄을 사용하면 <id>
첫 번째 태그부터 마지막 태그까지 파일의 모든 내용을 추출합니다. </id>
코드를 여러 번 추출하려면 어떻게 변경해야 합니까?
두 번째 질문은: - 다운로드 전용 플러그인이 yum 그룹에서 작동합니까?
답변1
당신에게 필요한 것이 더 비슷한 것 같습니다
sed -n 's:.*<id>\(.*\)</id>.*:\1:p'
(귀하의 예와 같이 가정하고 <id>
및 은 같은 줄에 있으며 </id>
한 줄에 하나만 있습니다).<id>...</id>
또는 XML 인식 도구를 사용하십시오.
xmlstarlet sel -t -v '//id' -n
답변2
$ echo '<id>I am a sample group</id>' | sed 's/<\/\?[^>]\+>//g'
I am a sample group
$
이는 다음과 같습니다.어느태그와 앵커도 마찬가지입니다 <a href="...">...</a>
. GNUisms를 사용하지 않음 - 기본 정규식 지원으로 sed
충분합니다.
하지만: 여는 태그와 닫는 태그를 참고하세요.~ 해야 하다같은 줄에 있어야 합니다. 그렇지 않으면 명령문을 다시 작성해야 합니다.
답변3
시도해 보세요
xml_grep 'id' file.xml --text_only
답변4
이 글을 읽고 Reqd 추출 문제를 해결하고 싶습니다. RHEL 7.3 DVD의 패키지 repos.xml
, 위의 작성자가 원하는 것이 이것이라고 생각합니다. 그래서 이 스크립트가 다른 누군가에게 도움이 되기를 바랍니다. 저는 지금까지 이 스크립트를 꽤 여러 번 사용해 왔습니다.
따라서 X/GUI가 구성되지 않은 "최소 설치" RHEL7 서버에 "GNOME DESKTOP" 그룹을 설치해야 합니다.
[root@rac01]# yum group list
Loaded plugins: ulninfo
There is no installed groups file.
흠... DVD에는 yum에 대한 그룹 목록이 없습니다(예, 일반적인 "google" 수정 사항을 모두 시도했지만 성공하지 못했습니다). 그래서 xml의 하드 소스 목록에 의지했습니다.
- DVD를 설치하세요.
- 필요한 패키지 목록이 포함된 XML 파일을 찾았습니다.
- 패키지 그룹 목록을 추출합니다.
- 패키지 목록을 반복하여 설치합니다(종속성 포함).
당신이 도망쳤다고 가정해보자
createrepo /your/local_rpms/dir
.sudo su - mkdir /mnt/sr0 mount /dev/sr0 /mnt/sr0 cd /mnt/sr0 FILE=$(find . -name "*.xml" | xargs grep '<id>gnome-desktop<\/id>'| cut -d: -f1) PKGLIST=$(sed -n '/<id>gnome-desktop<\/id>/,/<\/packagelist>/p' $FILE \ | sed -n '/^ *<packagelist> *$/,/^ *<\/packagelist> *$/{/<packagereq type>/{d};p}' \ | cut -d'>' -f2 \ | cut -d'<' -f1) for p in ${PKGLIST} do yum deplist ${p}* | awk '/provider:/ {print $2}' | sort -u | xargs yum -y install done