不确定这个问题是否已经被问过,但基本上我想从包含特殊字符的 file1 中读取并将它们更改为 URL 编码版本。 file2 是一个管道分隔的文档,例如:#|%23。
So when the script reads from the file1 a "#" it would change this to "%23". There are 174 different characters to recognise so if statements wouldn't be feasible.
注意:我写的是 bash
我正在考虑使用 sed 或 awk 之类的东西,但我不知道如何将其与文本文件一起使用。
有什么建议吗?
最佳答案
awk -F '|' '
FNR == NR { Trsl[ $1 ] = $2; next}
FNR != NR {
s0 = $0
for( Char in Trsl) {
Cnt = split( s0, a0, Char )
s0 = a0[ 1 ]
for( i = 2; i <= Cnt; i++) s0 = s0 Trsl[ Char] a0[ i]
}
print s0
}
' File2 File1
- 文件顺序对于在要翻译的文件之前读取翻译文件非常重要
- 假设
|
不在特殊字符列表中 - 由于元字符出现意外结果,无法使用 gsub
- 正如 @karakfa 所说,翻译顺序(与 File2 条目相关)不会保留,因此如果在早期翻译结果中使用字符,则可能会出现一些不需要的结果,如
->
% 20
和%
->Percent
之后将为原始 提供
Percent20
关于bash - 在 bash 中使用数组更改行分隔文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32586597/