将除xml标记外的所有文本小写
我有大量带标签的字符串:将除xml标记外的所有文本小写,xml,linux,awk,sed,Xml,Linux,Awk,Sed,我有大量带标签的字符串: watch <TEAM>Philly's</TEAM> Game what's on <TIME>Wednesday night eight o'clock</TIME> 但是我不知道如何避免XML标记。欢迎使用任何语言/工具。此sed(gnu)一行程序可能有助于: sed -r 's/([^<>]*)($|<)/\L\1\E\2/g' sed-r/([^]*)($|此sed(gnu)一行程序可能有助
watch <TEAM>Philly's</TEAM> Game
what's on <TIME>Wednesday night eight o'clock</TIME>
但是我不知道如何避免XML标记。欢迎使用任何语言/工具。此sed(gnu)一行程序可能有助于:
sed -r 's/([^<>]*)($|<)/\L\1\E\2/g'
sed-r/([^]*)($|此sed(gnu)一行程序可能有助于:
sed -r 's/([^<>]*)($|<)/\L\1\E\2/g'
sed-r/([^]*)($|sed-e/\(.*\)/\L\1/'-e/\(]*>\)/\U\1/g'文件名
sed-e's/\(.*\)/\L\1/'-e's/\(]*>\)/\U\1/g'文件名
以下是如何使用awk
awk -F"<|>" '{for (i=1;i<=NF;i++) printf "%s",(i%2?tolower($i):"<"$i">");print ""}' file
watch <TEAM>philly's</TEAM> game
what's on <TIME>wednesday night eight o'clock</TIME>
awk-F”“{for(i=1;i以下是如何使用awk
awk -F"<|>" '{for (i=1;i<=NF;i++) printf "%s",(i%2?tolower($i):"<"$i">");print ""}' file
watch <TEAM>philly's</TEAM> game
what's on <TIME>wednesday night eight o'clock</TIME>
awk-F”“{for(i=1;我的工作很有魅力!我的工程师好奇地问它是如何工作的!你介意解释一下这个命令吗?我看到搜索/替换命令有两个捕获组,但没有看到更多…@xeon将\L\1\E\2
更改为\r\n\r\n\r\n\r\n\r\r\n\r\n\r\r\n\r\r\ned解释。\E
在这种情况下是无用的。工作起来很有魅力!我的工程师好奇地问它是如何工作的!你介意解释命令吗?我看到搜索/替换命令有两个捕获组,但没有看到更多。@xeon将\L\1\E\2
更改为\35;#####\2
然后你看到正则表达式匹配了什么。for\L\E
请阅读info sed,这里有详细的解释。\E
在这种情况下没有用处。看起来这个解决方案只是结合了两个命令(与第一个答案相比)。为什么使用\U而不是\E?@xeon,这是一种稍有不同的方法。第一个表达式将所有内容转换为小写,第二个表达式将<和>之间的所有内容转换为大写。如果当前不是所有xml标记都是大写的,这可能会很方便。看起来此解决方案仅结合了两个命令(与第一个答案相比)。为什么使用\U而不是\E?@xeon,这是一种稍微不同的方法。第一个表达式将所有内容转换为小写,第二个表达式将<和>之间的任何内容转换为大写。如果当前并非所有xml标记都是大写,这可能会很方便。
sed -e 's/\(.*\)/\L\1/' -e 's/\(<[^>]*>\)/\U\1/g' fileName
awk -F"<|>" '{for (i=1;i<=NF;i++) printf "%s",(i%2?tolower($i):"<"$i">");print ""}' file
watch <TEAM>philly's</TEAM> game
what's on <TIME>wednesday night eight o'clock</TIME>