我收到了一个文本文件,它包含很多很多值,所有这些值一次分开一行,如下所示。 EX:
blue
red
orange
green
colors
hopefully
you
get
the
idea
我对命令行非常熟悉,并希望今天学到新东西。
我必须获取这些值并将它们插入语法中,每个值的语法都是相同的。
示例:
<a href="blue">
<a href="red">
<a href="orange">
<a href="green">
<a href="colors">
等等。
有些东西告诉我,复制粘贴不仅是解决这个问题的有效方法,也不是最有效的解决方案。
对此有什么看法?
感谢阅读。
答案 0 :(得分:2)
awk可以很容易地做到这一点。注意:您应该关闭代码:
$ awk '{ print "<a href=\""$1"\"></a>" }' file
<a href="blue"></a>
<a href="red"></a>
<a href="orange"></a>
<a href="green"></a>
<a href="colors"></a>
<a href="hopefully"></a>
<a href="you"></a>
<a href="get"></a>
<a href="the"></a>
<a href="idea"></a>
答案 1 :(得分:2)
使用sed
,您可以参考与&
的唯一匹配:
$ sed 's/.*/<a href="&">/' file
<a href="blue">
<a href="red">
<a href="orange">
<a href="green">
...
然后,需要在&
附近添加所需的文字。
答案 2 :(得分:1)
如果你只是想做这个特定的例子,你可以简单地在每行前面加上字符并附加字符:
sed -i -e 's/^/<a href="/' -e 's/$/">/' yourfile
答案 3 :(得分:1)
你可以这样做:
#!/bin/bash
while IFS= read line; do
line="<a href=\"$line\">"
echo "$line"
done <file.txt
如果要将输出重定向到单独的文件,则: 改变:
echo "$line"
为:
echo "$line" >> separate_file.txt
甚至更好: 改变
echo "$line"
done <file.txt
为:
echo "$line" # This is necessary and it won't print output
done <file.txt > separate_file.txt
答案 4 :(得分:1)
举个例子,因为还没有perl答案 - 正如Tom所指出的那样:
“当然,perl答案可能只是awk答案perl -lne 'print "<a href=\"$_\">"' file
或sed答案perl -pe 's/(.*)/<a href="$1">/' file"
的直接端口。
这是真的 - perl可以“一个班轮”,并假装成其他人之一。
但在脚本中,我可能会这样做:
use strict;
use warnings;
my $prefix = q{<A HREF="};
my $suffix = q{">};
while ( my $line = <DATA> ) {
chomp ($line);
print "$prefix$line$suffix\n";
}
__DATA__
blue
red
orange
green
colors
hopefully
you
get
the
idea
我会问你到底想要完成什么 - 这不会生成有效的HTML,所以我怀疑你正在寻找一个不同的问题。
只是为了多样化 - 你可以假装你在这里组装XML:
use strict;
use warnings;
use XML::Twig;
my $xml = XML::Twig -> new( 'pretty_print' => 'indented' );
$xml -> set_root ( XML::Twig::Elt -> new ( 'HTML' ) );
while ( my $line = <DATA> ) {
chomp ($line);
$xml -> root -> insert_new_elt('last_child', "A", { "HREF" => $line }, "link to $line" );
}
$xml -> print;
__DATA__
blue
red
orange
green
colors
hopefully
you
get
the
idea
这会产生你:
<HTML>
<A HREF="blue">link to blue</A>
<A HREF="red">link to red</A>
<A HREF="orange">link to orange</A>
<A HREF="green">link to green</A>
<A HREF="colors">link to colors</A>
<A HREF="hopefully">link to hopefully</A>
<A HREF="you">link to you</A>
<A HREF="get">link to get</A>
<A HREF="the">link to the</A>
<A HREF="idea">link to idea</A>
</HTML>
在我看来,这是“汇编语法”的一个更好的例子,因为最好遵循正式/更严格的定义 - 比如XML。 (或JSON)。这些特别有用,因为它们具有可以解析的规范,因此使互操作更容易,而不是使用定制的文件/数据格式。
答案 5 :(得分:1)
Perl解决方案:
perl -lpe'$_ = qq{<a href="$_">}' colors.txt
或
perl -le'print qq{<a href="$_">}' colors.txt