簡體   English   中英

bash shell 腳本,它從文本文件中獲取兩列數據並使用帶有兩個變量的 for 循環

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM