مما اضطر ترتيب حقول الإخراج من الأمر قص
-
10-07-2019 - |
سؤال
وأريد أن أفعل شيئا من هذا القبيل:
cat abcd.txt | cut -f 2,1
ووأريد لكي تكون 2 ثم 1 في الإخراج. على الجهاز أنا اختبار (فري 6)، وهذا لا يحدث (الطباعة في 1،2 الترتيب). هل تستطيع أن تقول لي كيف نفعل هذا؟
وأعرف أنني أستطيع أن اكتب دائما شيل للقيام بذلك عكس، ولكن أنا أبحث عن شيء باستخدام 'قطع' خيارات الأمر.
وأعتقد أنني استخدام الإصدار 5.2.1 من coreutils تحتوي على قطع.
المحلول
لا يمكن أن يتم ذلك باستخدام cut
. وفقا لصفحة الرجل:
والإدخال المحددة في نفس الترتيب الذي يتم قراءته، وليس كتب مرة واحدة بالضبط.
اقتباس فقرة> كان والترقيع cut
المقترحة العديد <لأ href = "HTTP: //lists.gnu.org/archive/html/bug-coreutils/2007-09/msg00169.html "يختلط =" نوفولو noreferrer "> مرات ، ولكن حتى على تم رفض بقع كاملة .
وبدلا من ذلك، يمكنك القيام بذلك باستخدام awk
، مثل هذا:
awk '{print($2,"\t",$1)}' abcd.txt
واستبدال \t
مع كل ما كنت تستخدم كفاصل المجال.
نصائح أخرى
والجواب لارس "كانت كبيرة ولكنني وجدت واحدة أفضل. القضية مع نظيره هي يطابق \ ر \ ر إذ لم يكن الأعمدة. لإصلاح هذا الاستخدام ما يلي:
awk -v OFS=" " -F"\t" '{print $2, $1}' abcd.txt
وأين:
و-F"\t"
هو ما خفض على بالضبط م> (علامات).
و-v OFS=" "
ما للتفريق مع (مسافتين)
مثال:
echo 'A\tB\t\tD' | awk -v OFS=" " -F"\t" '{print $2, $4, $1, $3}'
وهذه النواتج:
B D A