【发布时间】:2015-12-24 17:57:35
【问题描述】:
以下是输入文件中一些内容的示例:
username: thebestusernamethereis
EMAILID: someemail@address.com
enc_username: NULL
MACHINE_CODE: NULL
FIRSTNAME: John
LASTNAME: Doe
ADDRESS1: NULL
ADDRESS2: NULL
COUNTRY: NULL
CITY: NULL
STATE: NULL
ZCODE: NULL
ACTIVATION_CODE: NULL
ACCOUNT_STATUS: Y
CREATION_DATE: 2010-07-02 12:02:33
DEFAULT_DRIVE: NULL
EXCHANGE_BACKUP_ALLOWED: N
SYSTEM_STATE_BACKUP_ALLOWED: N
CHECKSUM_1_METHOD: NULL
CHECKSUM_2_METHOD: NULL
additional_flag_1: NULL
additional_flag_2: NULL
additional_flag_3: F
USEDBY: F
DATABASE_DRIVE: NULL
maxquotalimit: 2147483648
CURQUOTALIMIT: 0
ECOMMERCE_FLAG: NULL
phone:
cancellation_date: NULL
proxy_server: sb.domain.com
proxy_port: 20000
proxy_port_server: 10001
num_accts: NULL
license_cd: NULL
IDRIVE_DEFAULT_DRIVE: NULL
international_additional_flag_1: M
move_identifier: NULL
subscribe: N
client_ip: NULL
USEDBY_COUNT: 0
last_update_date: NULL
promocode: NULL
password_support: NULL
UNDER MAINTENANCE: UNDEFINED
我的 awk 行似乎导致我的脚本出现错误。因此,我按如下方式测试了该行:
cat inputfile.txt | awk '$1 ~ /^(user_name:|EMAIL:|FIRST_NAME:|LAST_NAME:|CREATION_DATE:|REGISTRATION_STATUS:)$/{printf "%s,",$2\} $1 ~ /REGISTRATION_STATUS:/{print $2\}' inputfile.txt > outputfile.txt
我收到的错误是:
awk: syntax error at source line 1
context is
$1 ~ /^(user_name:|EMAIL:|FIRST_NAME:|LAST_NAME:|CREATION_DATE:|REGISTRATION_STATUS:)$/{printf >>> "%s,",$2\ <<< } $1 ~ /REGISTRATION_STATUS:/{print $2\}
awk: illegal statement at source line 1
这个错误的奇怪之处在于,在我更改输出文件名之前脚本很好:old = IDL_$output_file.idl';新 = `$output_file.idl'。这是在上面的 PRODUCT4 下。
所以,我用一个没有错误消息的备份替换了这个文件,它仍然产生这个错误。
我不知道该怎么做才能解决这个问题。我尝试将 #!/bin/sh 更改为 #!/bin/bash 并遇到相同的错误。我不知道语法错误是什么。
我在 Mac El Capitan 上使用 bash。
请帮忙。谢谢!
【问题讨论】:
-
请不要指望我们通过一个 100 行的脚本来找到导致问题的
awk的位置。您应该能够以echo "info ....." | awk '{broken code}'之类的可测试方式轻松地展示它。当您这样做时,您可能只需隔离问题即可找到问题的根源。祝你好运。 -
我将编辑我的问题。谢谢。
-
@shellter 我编辑了我的问题,所以它应该更容易处理。再次感谢您。
-
pluse-uno 用于改进您的 Q。请使用此表格填写您以后发布的问题。通常,您还需要包括所需的输出和当前输出。祝你好运。