Windows cmd - findstr و gawk أو كيف يمكنك سحب البيانات أدناه
سؤال
كنت أتساءل عما إذا كان من الممكن استخدام 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
لا تنتمي إلى StackOverflow