質問

AWKを通過する元の形式のPOSTを保持する同じ人から送信されました。

g awkに関連する簡単な質問があります。以下に示します:

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

次のgawkコードの使用-gensub()を使用して元のフォーマットを維持します:

 gawk '{ print gensub($1, "\t", 1) }' ./sample_code.out

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

g awkまたはawkを使用して(おそらく正規表現で)フィールド$ 1の前の空白を削除するにはどうすればよいですか(^)

以下に図解:

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

よろしくお願いします

役に立ちましたか?

解決

これは機能しますが、常に3つのスペースを削除したいという知識があるためです。

vinko@parrot:~$ cat foo.c
  1 int blah (void)
  2 {
  3         if (foo) {
  4                 printf ("blah\n");
  5         }
  6         return 0;
  7 }

vinko@parrot:~$ gawk '{ print gensub(/^   /,"",1,gensub($1, "", 1)) }' foo.c    
int blah (void)
{
        if (foo) {
                printf ("blah\n");
        }
        return 0;
}

他のヒント

awk '{sub(/^[ \t]+/, ""); print}'

これは有名なawk 1ライナーのリストです。 http: //student.northpark.edu/pemente/awk/awk1line.txt

これは、「仕事のための間違ったツール」のケースであると私を打った。 sed`を使用します:

sed 's/^[ <tab>]*//' sample.out

今、問題が awk の最も内側の詳細に関するものであれば、これは役に立たないかもしれません。問題がスペースを削除することである場合、それはより速く、(少なくともほぼ間違いなく)より簡単です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top