سؤال الوصول إلى عنصر الحقل عبر awk


لدي الأعمدة التالية:

_111_   [555]
_222_   [666]
_333_   [777]
_444_   [888]

اريد الوصول الى 111 من عند _111_. أو 888 من عند [888].

كيفية الوصول إلى عناصر الحقول مع awk.


2
2017-07-21 10:57


الأصل




الأجوبة:


جرب هذا:

  awk '{gsub("_|\\[|\\]","",$0); print $1 "-" $2;}' prova.txt

AWK قراءة كل سطر واستخدام "" (مسافة بيضاء) كفاصل للحقل ، gsub إزالة الأحرف: '_' '[' ']' ، لذلك سيحتوي $ 1 و $ 2 على الرمز المميز بدون char غير المرغوب فيه.

سينتج هذا البرنامج النصي:

  111-555 
  222-666 
  333-777 
  444-888

إذا كنت ستصل بالضبط _111_ و [8888] كرمز مميز ورمز مميز آخر ، جرب هذا:

  awk '{gsub("_|\\[|\\]","",$0);if (NR == 1) print $1;}END{print $2}' prova.txt

في هذه الحالة سيكون الناتج:

 111
 888

ها هو دليل awk حيث يمكنك العثور على مزيد من التفاصيل.


1
2017-07-21 11:55





إذا كان لديك هذه البيانات في ملف file.txt

الدخول 111 كـ ،

cat file.txt | tr -d "[]_" | awk 'NR==1 {print $1}'

الوصول إلى 888 باسم ،

cat file.txt | tr -d "[]_" | awk 'NR==4 {print $2}'

حول الوصول إلى عناصر الحقول مع awk.


1
2017-07-21 11:55