我有以下格式的文件,我想将值传递给 HTML
BE64533-A0E1-4F98-A91F-02C1D0 column=ABC_Received:ABC_Structure_Type, timestamp=1439978656596, **value=ASCII**
BE64533-A0E1-4F8-A9F-03CE2C1D0 column=ABC_Received:Current_To, timestamp=1439978656596, **value=RPI**
如何从此文件获取值(ASCII 和 RPI)并传递给 STATIC HTML 标签。我在下面有 HTML 标记作为我想要包含该值的位置(ASCII 和 RPI)
<!--Row 1 Header -->
<tr>
<td class="HeaderCell">ABC_Structure_Type</td>
<td class="HeaderCell">Current_To</td>
<!--Row 1 Values -->
<tr>
<td class="ValueCell">[ABC_Structure_Type]</td>
<td class="ValueCell">[_Current_To]</td>
需要的输出如下图
<!--Row 1 Values -->
<tr>
<td class="ValueCell">ASCII</td>
<td class="ValueCell">RPI</td>
从文件中,它们需要分别替换为 ASCII 和 RPI 值的文件中的第 1 行值 [ABC_Structure_Type] 和 [Current_To]
答案1
好吧,目前还不清楚您真正想要做什么,但很明显,您需要从文件中解析这些值。为此,只需将值放入单独的数组中,如下所示(您需要使用包含值的实际文件设置 YourFile):
H=()
V=()
while read -r Line; do
H+=("$( printf "%s" "$Line" | grep -o 'column=[^,]*' | sed 's/^column=ABC_Received://')" )
V+=("$( printf "%s" "$Line" | grep -o ' \*\*value=.*\*\*$' | sed 's/.*=\(.*\)\*\*$/\1/' )")
done < "$YourFile"
要检查数组是否正确填充,只需运行
printf "%s\n" "${H[@]}"
printf "%s\n" "${V[@]}"
如果您只想为静态 HTML 页面创建存根,那么您现在就可以轻松地做到这一点,如果您编辑上面的 printfs 或使用简单的循环(如果您想对值执行一些不同的事情):
for v in "${H[@]}"; do
printf '<td class="HeaderCell">%s</td>\n' "$v"
done
for v in "${V[@]}"; do
printf '<td class="ValueCell">%s</td>\n' "$v"
done
带有示例值的输出将是:
<td class=HeaderCell>ABC_Structure_Type</td>
<td class=HeaderCell>Current_To</td>
<td class=ValueCell>ASCII</td>
<td class=ValueCell>RPI</td>
当然,您现在可以使用这些值做任何您想做的事情(不仅仅是 printfs)。
免责声明:GNU/bash 脚本...
答案2
好吧,假设 a) id-field 的前两个部分是将两行组合在一起的关键,并且 b) 您也可以从命令行使用 perl,以下脚本将解析出值 - 字段,并将其转换给定输入文件的 html 输出:
#!/usr/bin/perl
my $fn=shift;
my ($ABC_found,$ASCII,$RPI,$ID)=(0,"","","");
open(FIN,"<",$fn) || die ("cannot open infile $fn");
sub print_html {
$asc = shift;
$rpi = shift;
print("
<html><body>
<!--Row 1 Header -->
<tr>
<td class='HeaderCell'>ABC_Structure_Type</td>
<td class='HeaderCell'>Current_To</td>
<!--Row 1 Values -->
<tr>
<td class='ValueCell'>$asc</td>
<td class='ValueCell'>$rpi</td>
</body></html>");
}
while (<FIN>) {
if ($ABC_found==0 && m/^([\w\d]*)[\-]([\w\d]*).*ABC_Structure.*, [\s]timestamp=.*,[\s]value=(.*)$/) {
# print("ASCII : [$1]-[$2] : [$3]\n");
$ABC_found=1;
$ID="$1-$2";
$ASCII=$3
} elsif ($ABC_found==1 && m/^$ID.*Current_To.*[\s]timestamp=.*,[\s]value=(.*)$/) {
$ABC_found=0;
# print("RPI : [$1]\n");
$RPI=$1;
print_html($ASCII,$RPI);
} else {
$ABC_found=0;
}
}
close(FIN);
用法:
$> perl script.pl inputfile.txt
玩得开心 !