擅长:python、mysql、java
<p>使用awk,对第二个文件滥用<code>FS=""</code>,使每个字母成为自己的一列:</p>
<pre><code>$ awk '
NR==FNR {
a[$1]=$2; next } # hash positions and letters to a
{
for(i in a) # for all positions
$i=a[i] # replace the letters in them
}1' textpos FS="" OFS="" file
ABXSISANEXAMPLEOFANINPUTFILEWITHALONGSTRINGOFTEXT
</code></pre>
<p>另一种方法是使用<code>for</code>和<code>substr</code>从<code>a[]</code>和<code>$0</code>逐字符构建变量:</p>
<pre><code>$ awk '
NR==FNR {
a[$1]=$2; next } # hash textpos to a
{
for(i=1;i<=length($1);i++) # for each position in $0
b=b ((i in a)?a[i]:substr($0,i,1)) # get char from a[] or $0, in that order
print b; b="" # output and reset b for next round
}' textpos file
ABXSISANEXAMPLEOFANINPUTFILEWITHALONGSTRINGOFTEXT
</code></pre>