سؤال

وهناك وسيلة سهلة بعيدا إلى الجمع بين الحقول في AWK؟ على وجه التحديد، ولدي خطوط مثل هذا:

1,2,some text
3,4,some text, but it has commas in it, annoyingly

وأريد أن استخراج رقمين كما الحقلين الأولى، ولكن بعد ذلك أريد كل من النص (الفواصل وجميع) ليكون الحقل الثالث. هل هناك طريقة للقيام بذلك؟

وكانت دعوتي AWK الأساسية مثل هذا:

awk -F\, '{print $1"|"$2"|"$3}' file.txt

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

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

المحلول

وربما:

awk '{for (i=0;i<2;i++) sub(",", "|", $0); print}' file.txt

نصائح أخرى

هل يمكن استخدام سد للقيام بذلك.

cat file.txt | sed 's/\(.?*\),\(.?*\),/\1|\2|/'
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top