سؤال
وهناك وسيلة سهلة بعيدا إلى الجمع بين الحقول في 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|/'
لا تنتمي إلى StackOverflow