在UNIX中循环并合并两个文件

在UNIX中循环并合并两个文件,unix,for-loop,Unix,For Loop,对于那些有一些编程知识的人来说,这应该很简单。。。不幸的是我没有 我正在尝试遍历图像标题的文本文件,并将它们作为标题标记添加到html文件中。图像标题文件有105个标题(每个标题由回车分隔),而图库文件的每个a标记上都有空白的alt标记(设置为alt=“#”)等。标题的顺序与html文件中图像的顺序相对应 换句话说。。。psuedo代码应该是:“循环浏览captions.txt中的每一行,对于gallery.html文件中的每一个alt=“#”,将#替换为相应的标题。” 我在Mac电脑上,所以我

对于那些有一些编程知识的人来说,这应该很简单。。。不幸的是我没有

我正在尝试遍历图像标题的文本文件,并将它们作为标题标记添加到html文件中。图像标题文件有105个标题(每个标题由回车分隔),而图库文件的每个a标记上都有空白的alt标记(设置为alt=“#”)等。标题的顺序与html文件中图像的顺序相对应

换句话说。。。psuedo代码应该是:“循环浏览captions.txt中的每一行,对于gallery.html文件中的每一个alt=“#”,将#替换为相应的标题。”

我在Mac电脑上,所以我想使用UNIX

非常感谢您的帮助

谢谢, Mike

如果所有的
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,

发布你的尝试,我相信有人会帮助…发布你的尝试,我相信有人会帮助。。。