awkコマンドの問題

awkコマンドの問題

次のエラーを発生させるスクリプトがあります。誰でも私を追跡できますか?この 4 時間の間、この問題はきちんと失敗しました。

スクリプトには次の内容が含まれています。 vi bb.sh

#!/bin/awk -f
'BEGIN{FS=OFS="|"} NR==FNR{$1="";++a[$0];next} {field1=$1;$1=""; if ( !(a[$0]) ) {$1=field1;print $0} }' /home/path/a.txt  /home/path/b.txt >  /home/path/c.txt

実行後に報告されたエラー:

-bash-4.2$ sh bb.sh
bb.sh: line 2: BEGIN{FS=OFS="|"} NR==FNR{$1="";++a[$0];next} {field1=$1;$1=""; if ( !(a[$0]) ) {$1=field1} }: command not found

ベストアンサー1

awkスクリプトに欠けているものは次のとおりです。

awk 'BEGIN{FS=OFS="|"} NR==FNR{$1="";++a[$0];next} {field1=$1;$1=""; if ( !(a[$0]) ) {$1=field1;print $0} }' \
/home/path/a.txt  /home/path/b.txt >  /home/path/c.txt

スクリプトにはおそらく#!/bin/sh最初の行も必要です。

または、スクリプトを正しいawkスクリプトに変換することもできます。

#!/usr/bin/awk -f

BEGIN {FS = OFS = "|"} 

NR==FNR { $1="";++a[$0]; next }

{
  field1 = $1;
  $1 = ""; 
  if ( !(a[$0]) ) {
     $1 = field1;
     print $0;
  }
}

...その後、次のように実行します。

$ ./bb.awk /home/path/a.txt /home/path/b.txt >/home/path/c.txt

おすすめ記事