إزالة المسافة البيضاء قبل حقل باستخدام AWK
-
03-07-2019 - |
سؤال
(بالضبط تقريبا مكررة الحفاظ على الشكل الأصلي بعد يمر من خلال AWK قدمت من قبل الشخص نفسه.)
لدي سؤال بسيط المتعلقة زawk ، كما هو موضح أدناه:
1 int blah (void)
2 {
3 if (foo) {
4 printf ("blah\n");
5 }
6 return 0;
7 }
باستخدام التالية البله التعليمات البرمجية باستخدام gensub() للحفاظ على التنسيق الأصلي:
gawk '{ print gensub($1, "\t", 1) }' ./sample_code.out
int blah (void)
{
if (foo) {
printf ("blah\n");
}
return 0;
}
كيف يمكنني استخدام ز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
, هذا قد يكون من أي مساعدة.إذا كانت المشكلة هو الحصول على مساحات إزالتها ، فمن أسرع (على الأقل يمكن القول) أبسط.