首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >字符串标记化算法不会标记化

字符串标记化算法不会标记化
EN

Stack Overflow用户
提问于 2010-10-07 19:12:48
回答 1查看 102关注 0票数 0

早上好,我正在编写一个bash脚本,从给定目录中的所有文件中提取特定XML标记的值。我决定通过标记每一行并返回th4e相关标记来完成此操作。问题是它没有正确地标记化,我不能完全弄清楚原因。这是我能用来重建这个问题的最小例子

代码语言:javascript
复制
#!/bin/bash
for file in `ls $MY_DIRECTORY`
do
    for line in `cat $MY_DIRECTORY/$file`
    do
        LOCALIFS=$IFS
        IFS=<>\"

        TOKENS=( $line )
        IFS=$LOCALIFS
        echo "Token 0: ${TOKENS[0]}" 
        echo "Token 1: ${TOKENS[1]}" 
        echo "Token 2: ${TOKENS[2]}" 
        echo "Token 3: ${TOKENS[3]}" 

    done
 done

我猜这个问题与我在一个使用IFS的循环中处理IFS有关(即cat操作),但这以前从未出现过问题。

有什么想法吗?

谢谢,里克

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-10-07 20:01:54

使用更好的工具来解析xml,理想情况下它应该是一个解析器,但是如果您的需求很简单,并且知道xml的结构,那么简单的字符串操作可能就足够了。例如,xml文件,您想要获取tag3的值

代码语言:javascript
复制
$  cat file
blah
<tag1>value1 </tag1>
<tag2>value2 </tag2>
<tag3>value3
</tag3>
blah

$ awk -vRS="</tag3>" '/tag2/{ gsub(/.*tag3>/,"");print}' file
value3

所以要遍历你的目录

代码语言:javascript
复制
for file in *.xml
do
  value="$(awk -vRS="</tag3>" '/tag2/{ gsub(/.*tag3>/,"");print}' "$file" )"
  echo "$value"
done 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3881052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档