[英]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.