質問

以下に示すように、AWKを使用して単純にストリームからフィールドを削除する際に問題があります:

  1 int blah (void)
  2 {
  3         if (foo) {
  4                 printf ("blah\n");
  5         }       
  6         return 0;
  7 }  

次のコードを使用して最初のフィールドを削除します:

$ awk '{$ 1 ="&quot ;; print} 'example.out

 int blah (void)
 {
 if (foo) {
 printf ("blah\n");
 }
 return 0;
 }

これはなぜですか?これは、AWKがすべての空白を削除するためですか?これを防ぐことができますか?

よろしくお願いします

役に立ちましたか?

解決

http://awk.freeshell.org/RangeOfFields

実行方法の説明が含まれています。また、 http://student.northpark.edu/pemente/awk/awktailにもリンクしています。 txt には、問題に対する3つの解決策が含まれています。私が知る限り、フィールドに割り当てた場合、出力フィールド区切り文字を使用してすべてのフィールドを連結します。 " " + は突然1つのスペースに縮小されます。しかし、私はawkの専門家ではありません。たとえば、を変数 OFS に割り当てると、スペースではなくコロンが出力のフィールド間になります:

echo a b c | awk 'BEGIN{ OFS = ":" } { $1=""; print }'
$ :b:c

g awkを使用している場合、 gensub 拡張機能を使用できます。

print gensub($1 "[\t ]*(.*)", "\\1", 1); 
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top