有很多方法可以实现这一目标。 awk
是经典的文本操作程序。(嗯,awk
和sed
,用于不同的目的,但sed
在这里无济于事。)
awk '
BEGIN {
caps = ARGV[1]
delete ARGV[1]
}
/#/ {
getline cap < caps
gsub("#", cap)
}
{ print }
' captions.txt gallery.html
您可以将其放入脚本中以避免多次键入。只需用“ #!/usr/bin/awk -f
”开始一个纯文本文件,将“ BEGIN ... { print }
”放在它下面,并赋予文件执行权限。
这可以简单地翻译成大多数脚本语言。珀尔:
#!/usr/bin/perl -p
BEGIN { open CAPS, shift }
if (/#/) {
chomp($cap = <CAPS>);
s/#/$cap/g;
}
在 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,