سؤال

لا أحد يعرف إذا كان من الممكن لسلسلة مباريات الناتجة عن البحث في سجل واحد?مثلا لدي ملف مع محتويات التالية:

aaa :xxx 123
bb :y 8
ccccc :zzzzz 1923

الآن ما أريده هو أن نسخ عمود تبدأ مع ':' في مكان آخر.لسوء الحظ لا يمكنني استخدام visual وضع كتلة ، لأن العمود الأول لم عرض ثابت.وأعتقد أنه لا يمكن البحث عن العمود الثاني (:\w+) وتخزين maches في السجل.

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

المحلول

وهناك طريقة أخرى:

:g/:/norm f:"Aye

ولكل :h quote_alpha، إذا كنت تستخدم اسم السجل الكبير، فإنه يلحق بدلا من استبدال محتويات السجل. إذا قمت بتشغيل هذا وتحقق من محتويات "a السجل، سترى

:xxx:y:zzzzz

و(ربما مع بفواصل، اعتمادا على مجموعة كيف قمت cpoptions).

نصائح أخرى

هل يمكن أن تجعل ماكرو:

وسؤال وجواب (جعل ماكرو وتخزينها في السجل أ).

و"الجاودار (نثر لإنهاء الكلمة وإلحاقها لتسجيل ص - وسائل العاصمة إلحاق، الكتابة الصغيرة)

ون (مباراة القادمة)

وف (تسجيل النهاية)

إذا هناك 10 مباريات، والقيام 10 @ ل تأكد من تسجيل ص فارغ عندما تبدأ.

وهذا إضافة إلى .vimrc أو إنشاء أي ملف في المجلد همة المساعد مع المحتوى التالي.
بعد تنفيذ هذه الخطوط من خلال .vimrc أو المساعد، استخدام: قيادة CopyTextAfterColon ثم ببساطة إدراج من النص عازلة النظام تحتاج

.
  function! s:copy_after_colon()
    let values = ''

    let pattern = '^.*:\(\w\+\).*$'

    for line_number in range(1, line('$'))
        let line = getline(line_number)
        if line =~ pattern
            let value = substitute(line, pattern, '\1', '')
            let values .= value."\n"
        endif
    endfor

    let @* = values
endfunction

command! -nargs=0 CopyTextAfterColon call <SID>copy_after_colon()

ويمكنك التكيف مع هذا لاحقا لأغراض مختلفة.

أود أن تبدأ أولا مع تحليل الملف.لهذا الاستخدام TextFieldReader بدلا من اختراع الخاصة بك CSV محلل:

using Microsoft.VisualBasic.FileIO;

TextFieldParser reader = new TextFieldReader("C:\MyFile.txt");
reader.Delimiters = new string[] { " " };
string[] currentRow = null;
while (!reader.EndOfData)
{
    try
    {
        currentRow = reader.ReadFields();
        foreach(string field in currentRow)
        {
            //save this field...
        }
    }
    catch (MalformedLineException ex)
    {
        //handle exception the way you want
    }
}

مرة واحدة لدي البيانات أود أن استخراج فقط العمود الذي أنا مهتم في.إذا كنت يمكن أن نفترض أن كل سطر يحتوي على نفس النمط ثم يمكنك معرفة العمود الأيمن أثناء تحليل الصف الأول ثم أثناء تحليل بقية الصفوف يمكنك فقط حفظ العمود المناسب.لا يجب عليك حفظ الملف بأكمله في الذاكرة.

تحرير: أنا آسف جدا, اعتقد ان السؤال كان عن البرمجة C#.غلطتي آسف.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top