awk - 如何使用 awk 或 sed 从 HTML 代码中获取所有属性名称和值

标签 awk sed

这是我的文件,其中每一行如下所述:

<a href="abc.com" aria-label="abc ofe" class="abc"><span class="bcd">abc</span><span class="icon"></span></a> 

这是预期的输出:

href="abc.com" 
aria-label="abc ofe" 
class="abc"
class="bcd"
class="icon"

这是我得到的:

awk '{for(i=1; i<=NF;++i)printf "%s%s", $i, (i

echo "<a href="abc.com" aria-label="abc ofe" class="abc"><span class="bcd">abc</span><span class="icon"></span></a>" | awk '{for(i=1; i<=NF; ++i)printf "%s%s", $i, (i<NFi?FS:(i<NF?"\n":RS))}'

给我:

<a
href=abc.com
aria-label=abc
ofe
class=abc><span
class=bcd>abc</span><span
class=icon></span></a>

尝试在双引号之前获取“属性”字符串 和双引号之间的“属性值”字符串。

对于 macOS 需要使用 awk 或 sed。

最佳答案

根据显示的示例,您可以尝试执行以下 awk 代码。简单的解释是,将 RS(记录分隔符)设置为不同的值(由输出中所需的 OP 显示),然后打印相应的值。

awk -v RS='href="[^"]*"|aria-label="[^"]*"|class="[^"]*"' 'RT{print RT}' Input_file

关于awk - 如何使用 awk 或 sed 从 HTML 代码中获取所有属性名称和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68961360/

相关文章:

bash - Sed 在 Gitlab CI 期间无法替换引号中的字符串

linux - 如何使用 awk 提取引用字段?

linux - 如何grep一个文件并输出一行的匹配部分以及周围的一些单词?

perl -pe one liner : Replace all matched characters with same number of a different character. 非全局

linux - 如何在 linux 中按指定条件将文件中的两行合并为一个?

perl - 使用 sed 进行数据转换

python - ffmpeg|sed 命令的 subprocess.call 格式?

unix - 在 AWK 中去除开头的空白和尾随的空白

shell - Unix连接两个文件的多个字段

linux - 替换所有不包含匹配字符串的行