首页 > 解决方案 > 如何将 sed 的结果回显到 bash 中的文件?

问题描述

我正在尝试将 sed 命令的结果回显到不同的 .html 文件。sed 命令是逐行读取一个 .txt 文件,并且只取用逗号分隔符分隔的第二个值。

这是我所拥有的:

ind=1
while [ $ind -lt 4 ]
do
     echo "<tr><td>" >> ${HTML_FILE}
     echo "`sed -n '$ind p' ${TEXT_FILE} | awk -F ',' '{print $2}'`" >> ${HTML_FILE}
     echo "</td></tr>" >> ${HTML_FILE}
     ind=$((ind+1))
done

${TEXT_FILE} 的内容:

709A8, Text 1 | 34%
354Y7, Text 2 | 86%
F1065, Text 3 | 100%

当我运行我的代码时,这是我的输出。出于某种原因,它会打印“nd p”:

<tr><td>
 nd p
</td></tr>
<tr><td>
 nd p
</td></tr>
<tr><td>
 nd p
</td></tr>

预期的输出应该是这样的:

<tr><td>Text 1 | 34%</td></tr>
<tr><td>Text 2 | 86%</td></tr>
<tr><td>Text 3 | 100%</td></tr>

标签: bashunixawksedecho

解决方案


或者只是 awk:

awk -F, 'NR < 4 {print "<tr><td>" $2 "</td></tr>"}' "$TEXT_FILE" >> "$HTML_FILE"

推荐阅读