سؤال

أحاول أن أنابيب البيانات في "قطع"، قل، قطع العمود الأول من النص. هذا يعمل

$ cat test.txt | cut -d\  -f2-

قراءة من Stdin يعمل أيضا:

$ cut -d\  -f2- -
? doc/html/analysis.html
? doc/html/classxytree-members.html
<CTRL+D>

ومع ذلك، بمجرد أن تشارك أنبوب، لا يقبل بلدي <CTRL+D> بعد الآن، لا أستطيع الإشارة إلى "نهاية الملف":

$ cut -d\  -f2- - | xargs echo

تحديث: يبدو أن هذا خطأ في نسخة قديمة من باش (3.00.15). إنه يعمل في إصدارات أكثر حداثة (حاول 4.0.33 و 3.2.25). سيكون من الجميل أن يكون هناك بعض الحلول، لأنني لا أستطيع الترقية بسهولة.


الخلفية: لقد حصلت على برنامج نصي / غير نصي يعطيني إخراج مكثف cvs status (أعرف، CVS ...) في النموذج

? filename

على سبيل المثال للحصول على ملف غير ملزم بعد. أود أن أكون قادرا على نسخ + أجزاء لصق الإخراج من هذا الأمر واستخدام هذا كإدخال إلى أمر آخر، يضيف هذه الملفات إلى CVS. يقول:

$ cut -d\  -f2- | xargs cvs add
<paste lines>
<CTRL-D>        # <-- doesn't work

الأفكار؟

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

المحلول

هل حاولت

$ cat | cut -d\  -f2- | xargs cvs add
<paste lines>
<CTRL-D>        # <-- doesn't work

نصائح أخرى

الأمثلة الخاصة بك تعمل بشكل جيد بالنسبة لي. ما قذيفة تستخدمها؟ ما المرافق؟

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

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