【问题标题】:extracting the attribute value and cut the string using perl提取属性值并使用 perl 剪切字符串
【发布时间】:2017-11-10 18:32:07
【问题描述】:

<Student> <test subject="/school/class/twelve/maths.txt"/> <test subject="/school/class/eleven/physics.txt"/> </Student>

我想取“主题”属性的值,然后从类开始剪切字符串。 例如,输出必须是两个字符串:12/maths.txt 和 11/physics.txt 任何人都可以使用 shell 脚本或 perl 来帮忙吗?

【问题讨论】:

  • 欢迎来到 Stack Overflow。我们不是代码编写服务,我们也不会从头开始教授编程。如果您在学校作业方面需要帮助,那很好,但您需要先表现出一些努力。请使用tour,阅读How to Ask,然后进行一些研究。您的课程可能会提供可帮助您入门的资源。一旦你有,并且你在展示代码时遇到了困难,请随时提出,我们将帮助你摆脱困境。

标签: shell perl


【解决方案1】:

xsh 很简单,是 Perl 的 XML::LibXML 的包装器:

open file.xml ;
for /Student/test echo substring-after(@subject, '/school/class/') ;

【讨论】:

  • 我一直忘记你有那个东西。
【解决方案2】:

我已经尝试了分步。先获取属性值,再取子字符串

INPUT=$(sed -n 's/.*subject="\([^"]*\).*/\1/p' *.xml)
echo "the value of subject attribute=" $INPUT

但这会导致输出:

学科属性的值=/school/class/twelve/maths.txt /school/class/eleven/physics.txt

在这之后我已经取了子字符串:

SubString1=$(echo $INPUT| cut -d'/' -f 5)
echo "SubString1=" $SubString1
nospaces=${SubString1## } # remove leading spaces
SubString1=${nospaces%% } # remove trailing spaces
SubString2=$(echo $INPUT| cut -d'/' -f 11)
echo "SubString2=" $SubString2

输出是 SubString1=maths.txt SubString2=physics.txt

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-09
    • 2020-06-20
    • 1970-01-01
    • 2021-02-01
    • 1970-01-01
    • 2018-02-19
    • 1970-01-01
    • 2014-09-10
    相关资源
    最近更新 更多