【发布时间】:2018-08-27 01:48:36
【问题描述】:
我有一个使用 awk 的交叉引用 bash 脚本,但它可以在我的笔记本电脑上运行,但不能在我的其他计算机上运行:s..
脚本示例是:
"C:\cygwin\bin\gawk.exe" -F: "FNR==NR{a[$2]=$1;next} $1 in a{print a[$1] FS $2}" username.email.txt email.phone.txt > username.phone.txt
用户名.email 输入:
example:email@email.com
email.phone.txt 输入:
email@email.com:0123456789
username.phone 输出:
example:0123456789
所以这里发生的情况是如果电子邮件在 > email.phone.txt 中,输出 > username.phone.txt 中的用户名和电话在 3 个文件之间交叉引用。
这在另一台笔记本电脑上运行良好,但在另一台计算机上却无法运行。我收到语法错误和无效的下标表达式。
错误示例:
gawk: cmd. line:1: FNR==NR{a[]=;next} in a{print a[] FS }
gawk: cmd. line:1: ^ syntax error
gawk: cmd. line:1: error: invalid subscript expression
gawk: cmd. line:1: FNR==NR{a[]=;next} in a{print a[] FS }
gawk: cmd. line:1: ^ syntax error
gawk: cmd. line:1: FNR==NR{a[]=;next} in a{print a[] FS }
gawk: cmd. line:1: ^ syntax error
gawk: cmd. line:1: FNR==NR{a[]=;next} in a{print a[] FS }
gawk: cmd. line:1: ^ syntax error
gawk: cmd. line:1: error: invalid subscript expression
【问题讨论】:
-
您是否在计算机上使用不同的 shell?您的脚本示例对于
cmd.exe(标准 Windows 命令行)看起来是正确的,但对于bash是错误的。