在shell中的text.txt文件的每一行创建新的文本文件

时间:2014-12-12 13:50:49

标签: xml linux bash sorting

我在linux下使用bash。如何从中获取以下txt文件并创建新的文本文件,如下所示。

txt.txt

5#red
2#blue
2#green
2#orange
1#black

我希望能够为每行创建一个新文件并插入一些标签,为每个新文件生成以下格式,并使用该行的最后一个单词命名新的txt文件...

red.txt

<some tag> 5 </some tag> <some-other-tag> #red </some-other-tag>

等等每行。

2 个答案:

答案 0 :(得分:1)

尝试使用while循环执行此操作:

while IFS="#" read -r int color; do
    echo "<some tag> $int </some tag> <some-other-tag> #$color </some-other-tag>" > "$color.txt"
done < file

答案 1 :(得分:0)

我愿意:

awk -F"#" '
   {printf "<some tag> %d </some tag> \
            <some-other-tag> #%s </some-other-tag>\n",
            $1, $2 > $2".txt"}' file
                   ^
                   redirection to a file after 2nd field's name

awk根据#作为分隔符从输入中获取第一个和第二个字段。然后,它在名为$2.txt的文件中打印所需的输出...,即第二个字段的名称和.txt

测试

$ awk -F"#" '{printf "<some tag> %d </some tag> <some-other-tag> #%s </some-other-tag>\n", $1, $2 > $2".txt"}' a

现在我们有很多*.txt个文件,例如:

$ cat red.txt
<some tag> 5 </some tag> <some-other-tag> #red </some-other-tag>