sed 's/[^"]*"\([^"]*\).*/\1/'
melakukan pekerjaan.
penjelasan bagian dalam ' '
- s - memberitahu sed untuk menggantikan
- / - awal dari string regex yang akan dicari
- [^"]* - karakter apa pun yang bukan ", beberapa kali. (cocok dengan nama parameter= )
- " - hanya " .
- ([^"]*) - apa pun di dalam () akan disimpan sebagai referensi untuk digunakan nanti. \ ada sehingga tanda kurung tidak dianggap sebagai karakter untuk dicari. [^"]* artinya sama seperti di atas. (cocok dengan RemoteHost misalnya)
- .* - karakter apa pun, berapa pun jumlahnya. (cocok dengan " access="readWrite"> /parameter )
- / - akhir regex pencarian, dan awal string pengganti.
- \1 - referensi ke string yang kami temukan dalam tanda kurung di atas.
- / akhir string pengganti.
pada dasarnya s/telusuri ini/ganti dengan ini/ tetapi kami memintanya untuk mengganti seluruh baris hanya dengan sebagian yang kami temukan sebelumnya.
grep lahir untuk mengekstrak sesuatu:
grep -Po 'name="\K[^"]*'
uji dengan data Anda:
kent$ echo '<parameter name="PortMappingEnabled" access="readWrite" type="xsd:boolean"></parameter>
<parameter name="PortMappingLeaseDuration" access="readWrite" activeNotify="canDeny" type="xsd:unsignedInt"></parameter>
<parameter name="RemoteHost" access="readWrite"></parameter>
<parameter name="ExternalPort" access="readWrite" type="xsd:unsignedInt"></parameter>
<parameter name="ExternalPortEndRange" access="readWrite" type="xsd:unsignedInt"></parameter>
<parameter name="InternalPort" access="readWrite" type="xsd:unsignedInt"></parameter>
<parameter name="PortMappingProtocol" access="readWrite"></parameter>
<parameter name="InternalClient" access="readWrite"></parameter>
<parameter name="PortMappingDescription" access="readWrite"></parameter>
'|grep -Po 'name="\K[^"]*'
PortMappingEnabled
PortMappingLeaseDuration
RemoteHost
ExternalPort
ExternalPortEndRange
InternalPort
PortMappingProtocol
InternalClient
PortMappingDescription
Anda ingin awk
.
Ini akan menjadi peretasan yang cepat dan kotor:
awk -F "\"" '{print $2}' /tmp/file.txt
PortMappingEnabled
PortMappingLeaseDuration
RemoteHost
ExternalPort
ExternalPortEndRange
InternalPort
PortMappingProtocol
InternalClient
PortMappingDescription