私のコードは
awk '{if (substr($0,81,1)=="1") print substr($0,1,79)"1"; else print $0 }' data > collect_irsc_corrected
awk NF data | awk '{if (substr($0,80,1) == "1") data=substr($0,1,10); if(substr($0,80,1)==""&& substr($0,2,2) != " ") print substr($0,1,15),substr($0,19,10}' > data_irscstation
コードの2行目のエラーメッセージはどういう意味ですか?awk: line 1: missing ) near }
編集:以下は、明確な形式のエラーメッセージを生成する上記のスクリプトですgawk -o-
。
awk '
{
if (substr($0, 80, 1) == "1") {
data = substr($0, 1, 10)
}
if (substr($0, 80, 1) == "" && substr($0, 2, 2) != " ") {
print substr($0, 1, 15), substr($0, 19, 10
}
}
'
以下は、このコードを実行しようとしたときにgawkが生成するエラーメッセージです。
awk: cmd. line:8: print substr($0, 1, 15), substr($0, 19, 10
awk: cmd. line:8: ^ unexpected newline or end of string
すべてのコードを1行にまとめるよりもデバッグする方がはるかに簡単だと思います。
答え1
awk
エラーメッセージが示すように、関数呼び出しの最後のスクリプトの最後に閉じている括弧を忘れていましたsubstr($0,19,10)
。