AWKを使用してフィールドの前の空白を削除します
-
03-07-2019 - |
質問
(
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
の最も内側の詳細に関するものであれば、これは役に立たないかもしれません。問題がスペースを削除することである場合、それはより速く、(少なくともほぼ間違いなく)より簡単です。
所属していません StackOverflow