문제

(거의 정확한 복제 Awk를 통과하는 원래 형식 게시물을 유지합니다 같은 사람이 제출했습니다.)

나는 간단한 질문이 있습니다 gawk, 아래 그림 :

  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;
     }  

어떻게 사용할 수 있습니까? gawk 또는 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