![](/img/trans.png)
[英]Create a unique list from two variables in a Linux bash shell script
[英]bash shell script that takes two columns of data from text file and uses a for loop with two variables
我正在尝试获取一个包含两列数据的文本文件,并在每一行上循环,将 html 表标签应用于每一列并写入另一个文件,例如
例子.txt
1 pool1
2 pool2
3 pool3
这是我到目前为止。
for line in $(cat example.txt); do
count=$(echo $line | awk -F " " '{print$1}')
pool=$(echo $line | awk -F " " '{print$2}')
printf "\t<tr>\n\t <td>%s</td> <td>%s</td>\n\t</tr>\n" $count $pool >> example_info.html
done
电流输出:
<tr>
<td>1</td>
<td></td>
</tr>
<tr>
<td>pool1</td>
<td></td>
</tr>
<tr>
<td>2</td>
<td></td>
</tr>
<tr>
<td>poo2</td>
<td></td>
</tr>
<tr>
<td>3</td>
<td></td>
</tr>
<tr>
<td>poo3</td>
<td></td>
</tr>
期望的输出:
<tr>
<td> 1 </td>
<td> pool1 </td>
</tr>
<tr>
<td> 2 </td>
<td> pool2 </td>
</tr>
<tr>
<td> 3 </td>
<td> pool3 </td>
</tr>
谁能指出我的 for 循环在哪里搞砸了?
你需要一个while read
循环:
while read count pool
do
printf "\t<tr>\n\t<td>%s</td><td>%s</td>\n\t</tr>\n" $count $pool >> example_info.html
done < example.txt
您应该阅读 Bash read
命令并决定是否需要-r
选项。
我假设还有其他代码可以打印 HTML 标题和正文以及表格标题和结束标记等。
这更适合 awk:
awk '{print "<tr>"; for (i=1; i<=NF; i++) print "\t<td> " $i " </td>"; print "</tr>"}' file
<tr>
<td> 1 </td>
<td> pool1 </td>
</tr>
<tr>
<td> 2 </td>
<td> pool2 </td>
</tr>
<tr>
<td> 3 </td>
<td> pool3 </td>
</tr>
也试试这个方法
sed 's/\(.*\) \(.*\)/<tr>\n <td> \1 <\/td>\n <td> \2 <\/td>\n<\/tr>/' FileName
输出:
<tr>
<td> 1 </td>
<td> pool1 </td>
</tr>
<tr>
<td> 2 </td>
<td> pool2 </td>
</tr>
<tr>
<td> 3 </td>
<td> pool3 </td>
</tr>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.