我有一个~600行的.txt文件,all.txt。我想把它变成一个带有两列的HTML表,其中第一列包含all.txt的全部内容,每行中只有五行(因此表总共有大约120行)。这是我到目前为止所做的:
#!/bin/bash
A=10
B=5
len=`wc -l < all.txt`
len2=$((len / 5))
while [ $A -le $len2 ]; do
head -$A all.txt | tail -$B |
awk '
BEGIN{print " "}
{printf("<tr><td></td><td></td></tr>\n")}
END{print " "}
'
let A+=5
done
正如你所看到的,这实际上只是一个脚本的shell,我不知道在循环中使用awk会是什么。在这样的控制结构中使用awk甚至是最好的方法吗? bash甚至是一种合理的方式吗?
答案 0 :(得分:1)
sed
替代
$ sed -e '5~5a</td>\n<td></td>\n</tr>' -e '1~5i<tr>\n<td>' <(seq 15)
<tr>
<td>
1
2
3
4
5
</td>
<td></td>
</tr>
<tr>
<td>
6
7
8
9
10
</td>
<td></td>
</tr>
<tr>
<td>
11
12
13
14
15
</td>
<td></td>
</tr>
答案 1 :(得分:0)
你只需要awk:
awk 'NR%5 == 1{printf "%s<tr><td>", NR > 1 ? "</td><td></td></tr>" : ""}1' all.txt
最后可能需要添加END{print "</td><td></td></tr>"}
。