Windows cmd - findstr و gawk أو كيف يمكنك سحب البيانات أدناه

StackOverflow https://stackoverflow.com/questions/8979203

  •  12-11-2019
  •  | 
  •  

سؤال

كنت أتساءل عما إذا كان من الممكن استخدام findstr و/أو gawk لإرجاع إخراج Windows cmd تمامًا كما أريده.أقوم حاليًا بإرجاع الإخراج الخام، ثم إزالة الأسطر الفارغة، وتحليل ما أحتاج إليه.كشيء تعليمي فقط، كنت آمل أن أرى كيف يمكن القيام بذلك بشكل أفضل.

الناتج الخام:

Change 2086888 on 2012/01/23 by user1@server1

        test_description_1.2.3.4@29816

Change 2086888 on 2012/01/23 by user1@server2

        test_description2_4.5.6.7@29816

Change 2078677 on 2012/01/20 by user2@server1

        test_description3_7.8.9.10@29816

آخذ هذا الإخراج وأقوم بتحليله باستخدام php:

1. 2086888,test_description_1.2.3.4@29816
2. 2086888,test_description2_4.5.6.7@29816
3. 2078677,test_description3_7.8.9.10@29816

لتسهيل الأمر على نفسي، أقوم بإزالة الأسطر الفارغة من الإخراج عن طريق توصيلها إلى findstr واستخدام /V "^$".لذلك هو | findstr /v "^$".

كيف يمكنني الحصول على المخرجات التي أقوم بتحليلها باستخدام PHP مباشرة من سطر الأوامر؟

هل كانت مفيدة؟

المحلول

for يتخطى الأمر في cmd.exe الأسطر الفارغة، لذلك قد يكون من الأسهل تحليله بهذه الطريقة:

@Echo Off
setlocal enabledelayedexpansion
set linenum=1
for /f "tokens=1,2" %%A in (output.txt) do @(
  if %%A==Change set result=%%B
  if not %%A==Change (
    echo !linenum!. !result!,%%A
    set /a linenum=!linenum!+1
  )
)   
endlocal
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top