📄 trans.sh
字号:
#!/usr/bin/kshREPORT_FILE_NAME=REP6_716_20080625092336_1ATTRIBUTES="lcasControl:userlabel:sTPGblName:aaa:etId:bbb:implSt"REPORT_ID=19Attr_Names="userlabel etId implSt"Attr_Types="userlabel:STR etId:INT implSt:ENUM"#Assemble_start="{"#Assemble_end="}"#Field_sep=":"#Esc_sep="\\"SEP_CONF=Seperator.cfg;parseSepConf(){ if [ -f $SEP_CONF ];then { Assemble_start=`awk '{ if ($0 ~ /^ *\t* *#.*/ ){ } else if ($0 ~/ *\t* *$/){ } else if ($1 ~/^NESTING_INDICATOR_OPEN/ ){ printf "%s\n",$3 } }' $SEP_CONF`; if [ -z "$Assemble_start" ];then echo "ERROR:NESTING_INDICATOR_OPEN is not defined"; exit 1; fi Assemble_end=`awk '{ if ($0 ~ /^ *\t* *#.*/ ){ } else if ($0 ~/ *\t* *$/){ } else if ($1 ~/^NESTING_INDICATOR_CLOSE/ ){ printf "%s\n",$3 } }' $SEP_CONF`; if [ -z "$Assemble_end" ]; then echo "ERROR:NESTING_INDICATOR_CLOSE is not defined"; exit 1; fi Field_sep=`awk '{ if ($0 ~ /^ *\t* *#.*/ ){ } else if ($0 ~/ *\t* *$/){ } else if ($1 ~/^ATTRIBUTE_SEPARATOR_INDICATOR/ ){ printf "%s\n",$3 } }' $SEP_CONF`; if [ -z "$Field_sep" ];then echo "ERROR:ATTRIBUTE_SEPARATOR_INDICATOR is not defined"; exit 1; fi Esc_sep=`awk '{ if ($0 ~ /^ *\t* *#.*/ ){ } else if ($0 ~/ *\t* *$/){ } else if ($1 ~/^ESCAPE_INDICATOR/ ){ printf "%s\n",$3; } }' $SEP_CONF`; if [ -z "$Esc_sep" ]; then echo "ERROR:ESCAPE_INDICATOR is not defined"; exit 1; fi } else { echo "ERROR: $SEP_CONF not exist"; exit 1; } fi}transferReport(){ if [ -f "$REPORT_FILE_NAME" ]; then { OLD_REPORT_FILE=$REPORT_FILE_NAME.rt; mv $REPORT_FILE_NAME $OLD_REPORT_FILE; awk -F"$Field_sep" '{ req_attr_num=extractAttrs(required_attrs, req_attrs, ":"); split(additional_type, add_types, " ") for (z in add_types) { zz=index(add_types[z], ":"); name=substr(add_types[z], 1, zz-1); value=substr(add_types[z], zz+1); attr_types[name]=value; } if ($0 ~ /^#.*/ ) { printf "%s\n", $0; } else if ($0 ~ /^!RECORD_DESCRIPTION=\{.*/ ) { pos_front=index($0, asm_begin); pos_back=index($0, asm_end); len=pos_back - pos_front-1; old_attrstring=substr($0, pos_front+1, len); old_attrs_num=extractAttrs(old_attrstring, old_attrs, fld_sep); printf "!RECORD_DESCRIPTION=%s",asm_begin; first_attr_printed=0; for (x=1;x<=req_attr_num;x+=1) { found=0; for(y=1;y<=old_attrs_num;y+=1) { if (req_attrs[x]==old_attrs[y]) { found=1; req_old_map[x]=y; if (x!=1){ printf fld_sep; } printf req_attrs[x]; first_attr_printed=1; } } if (found==0) { req_old_map[x]=0; if (length(attr_types[req_attrs[x]])!=0) { if (x!=1 && first_attr_printed!=0){ printf fld_sep; } printf req_attrs[x]; first_attr_printed=1; } } } printf "%s\n",asm_end; } else if ($0 ~ /^!.*/ ) { printf "%s\n", $0; } else { real_fld_ix=0; for (fld_ix=1;fld_ix<=NF;) { real_fld_ix+=1; if (substr($fld_ix,1,1)==asm_begin) { fld_tmp=""; for(;fld_ix<=NF;fld_ix+=1) { if (substr($fld_ix,length($fld_ix),1)==asm_end &&length($fld_ix)==1 || substr($fld_ix,length($fld_ix),1)==asm_end &&length($fld_ix)>1 && substr($fld_ix,length($fld_ix)-1,1)!=esc_ch) { if (fld_tmp!=""){ fld_tmp=fld_tmp""fld_sep""$fld_ix; } else{ fld_tmp=$fld_ix; } real_fld[real_fld_ix]=fld_tmp; break; } else { if (fld_tmp!=""){ fld_tmp=fld_tmp""fld_sep""$fld_ix; } else{ fld_tmp=$fld_ix; } } } fld_ix+=1; } else { real_fld[real_fld_ix]=$fld_ix; fld_ix+=1; } } first_attr_printed=0; for (xx=1;xx<=req_attr_num;xx+=1) { if (req_old_map[xx]!=0) { if (xx!=1){ printf fld_sep; } printf real_fld[req_old_map[xx]]; first_attr_printed=1; } else if (length(attr_types[req_attrs[xx]])!=0) { type_real=attr_types[req_attrs[xx]]; if (type_real=="INT") { if (xx!=1 && first_attr_printed!=0){ printf fld_sep; } printf "-1"; first_attr_printed=1; } else if (type_real=="STR" || type_real=="ENUM") { if (xx!=1 && first_attr_printed!=0){ printf fld_sep; } printf "NotMeaningful"; first_attr_printed=1; } } } printf "\n"; } } function extractAttrs(in_string,array,seperator) { ix=1; attrs_string_tmp=in_string; pos_sep_req=index(attrs_string_tmp,seperator); while (pos_sep_req != 0 && length(attrs_string_tmp) !=0) { attr_str=substr(attrs_string_tmp,1,pos_sep_req-1); array[ix]=attr_str; ix+=1; attrs_string_tmp=substr(attrs_string_tmp,pos_sep_req+1); pos_sep_req=index(attrs_string_tmp,seperator); } if (length(attrs_string_tmp) !=0) { attr_str=substr(attrs_string_tmp,1); array[ix]=attr_str; } else { ix-=1; } return ix; } ' required_attrs="$ATTRIBUTES" additional_type="$Attr_Types" asm_begin="$Assemble_start" asm_end="$Assemble_end" fld_sep="$Field_sep" esc_ch="$Esc_sep" $OLD_REPORT_FILE >$REPORT_FILE_NAME; } else { echo "ERROR: $REPORT_FILE_NAME not exist"; exit 1; } fi}parseSepConf;echo $Assemble_startecho $Assemble_endecho $Field_sepecho $Esc_septransferReport;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -