我在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>
等等每行。
答案 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>