关于shell脚本问题,谁能给我解释解释这个脚本里,每个符号的作用。在线等

2024-11-18 18:36:37
推荐回答(2个)
回答1:

拜托,正则表达式你都不懂怎么跟你解释呢?
sed 's/<\/ERR>//;s///;s/
//;s/ //g;s/ //g;/^$/d' $1
第一句执行了6条替换命令
s/XXX/xxx/
分别表示把 替换成空字符串,也就是删除。删除
换行删除,空格全部删除。空行删除。

第二句:
sed -e :a -e '$!N;s/\n/ /;s/<\/ERRFIELDCN>/ /;ta' -e 'P;D'

就复杂了,不好解释,解释这个你自己得知道sed的原理。我猜你是不知道所以不解释。
这个东西能写一本书啊。 你去看这本书吧:
《 Sed与Awk (中文版) 》

回答2:

如果是问具体的命令什么意思的话,建议 lz 找教材系统学习,如果只是想了解脚本的意思,我可以加一下注释。下面按管道分行处理,最后的处理就是所有各行的处理的综合:
----------------------------------------------------------------------
$1
-> 输入文件
----------------------------------------------------------------------
sed 's/<\/ERR>//;s///;s///;s/ //g;s/ //g;/^$/d'
-> 删除
标签,然后删除空格,若处理后为空行,则删除此行
----------------------------------------------------------------------
sed -e :a -e '$!N;s/\n/ /;s/<\/ERRFIELDCN>/ /;ta' -e 'P;D'
-> 替换另起一行的 标签和 标签为空格
----------------------------------------------------------------------
sed -e :a -e '$!N;s/\n/ /;s/<\/ERRDESC>/ /;ta' -e 'P;D'
-> 同上,只是处理的标签不一样
----------------------------------------------------------------------
sed -e :a -e '$!N;s/\n/ /;s/<\/ERRFIELD>/ /;ta' -e 'P;D'
-> 同上,只是处理的标签不一样
----------------------------------------------------------------------
sed -e :a -e '$!N;s/\n/ /;ta' -e 'P;D'
-> 同上,只是处理的标签不一样
----------------------------------------------------------------------
grep '^'
-> 过滤出以 形状的行用于输出
----------------------------------------------------------------------
sed 's///'
-> 删除掉 标签
----------------------------------------------------------------------
$2
-> 处理后的结果输出到 $2 文件中存放
----------------------------------------------------------------------