在UNIX中循环并合并两个文件
对于那些有一些编程知识的人来说,这应该很简单。。。不幸的是我没有 我正在尝试遍历图像标题的文本文件,并将它们作为标题标记添加到html文件中。图像标题文件有105个标题(每个标题由回车分隔),而图库文件的每个a标记上都有空白的alt标记(设置为alt=“#”)等。标题的顺序与html文件中图像的顺序相对应 换句话说。。。psuedo代码应该是:“循环浏览captions.txt中的每一行,对于gallery.html文件中的每一个alt=“#”,将#替换为相应的标题。” 我在Mac电脑上,所以我想使用UNIX 非常感谢您的帮助 谢谢, Mike如果所有的在UNIX中循环并合并两个文件,unix,for-loop,Unix,For Loop,对于那些有一些编程知识的人来说,这应该很简单。。。不幸的是我没有 我正在尝试遍历图像标题的文本文件,并将它们作为标题标记添加到html文件中。图像标题文件有105个标题(每个标题由回车分隔),而图库文件的每个a标记上都有空白的alt标记(设置为alt=“#”)等。标题的顺序与html文件中图像的顺序相对应 换句话说。。。psuedo代码应该是:“循环浏览captions.txt中的每一行,对于gallery.html文件中的每一个alt=“#”,将#替换为相应的标题。” 我在Mac电脑上,所以我
alt=“#”
都在单独的行中,您可以使用ed:
{
while read cap
do echo "/alt=\"#\"/ s//alt=\"$cap\"/"
done < captions.txt
echo wq
} | ed gallery.html
{
边读边读
执行echo“/alt=\“\\\”/s//alt=\“$cap\”/”
完成
这假设您的标题中没有包含斜杠。如果所有的alt=“#”
都在单独的行中,您可以使用ed:
{
while read cap
do echo "/alt=\"#\"/ s//alt=\"$cap\"/"
done < captions.txt
echo wq
} | ed gallery.html
{
边读边读
执行echo“/alt=\“\\\”/s//alt=\“$cap\”/”
完成
这假设您的标题中没有包含斜杠。有很多方法可以实现这一目标
awk
是经典的文本操作程序。(嗯,awk
和sed
,用于不同的目的,但是sed
在这里没有帮助。)
在Ruby中几乎相同:
#!/usr/bin/ruby
caps = IO.readlines(ARGV.shift).each {|s| s.chomp!}
while gets
$_.gsub!(/#/, caps.shift) if $_ =~ /#/
print
end
和Python:
#!/usr/bin/python
import sys
caps = [s.strip() for s in file(sys.argv[1]).readlines()]
for f in [file(s, 'r') for s in sys.argv[2:]] or [sys.stdin]:
for s in f:
if s.find('#') > 0: s = s.replace('#', caps.pop(0))
print s,
实现这一目标有很多方法
awk
是经典的文本操作程序。(嗯,awk
和sed
,用于不同的目的,但是sed
在这里没有帮助。)
在Ruby中几乎相同:
#!/usr/bin/ruby
caps = IO.readlines(ARGV.shift).each {|s| s.chomp!}
while gets
$_.gsub!(/#/, caps.shift) if $_ =~ /#/
print
end
和Python:
#!/usr/bin/python
import sys
caps = [s.strip() for s in file(sys.argv[1]).readlines()]
for f in [file(s, 'r') for s in sys.argv[2:]] or [sys.stdin]:
for s in f:
if s.find('#') > 0: s = s.replace('#', caps.pop(0))
print s,
发布你的尝试,我相信有人会帮助…发布你的尝试,我相信有人会帮助。。。