پردازش متن و فایل ‌های متنی در لینوکس

پردازش متن در لینوکس

در سیستم عامل لینوکس، بسیاری از تنظیمات برنامه‌های مختلف، در فایل‌های متنی انجام می‌شوند. گاهی این فایل‌ها دارای خط‌های زیادی هستند. برای جستجو و ویرایش در فایل‌های متنی، دستورات و برنامه‌های مختلفی، وجود دارند، که به آن‌ها، دستورات پردازش متن(Text Processing) می‌گویند. پردازش متن، می‌تواند شامل تغییر یک کلمه، در سرتاسر متن و یا قسمتی از آن و جایگزینی با متن یا کلمه‌ای دیگر باشد. جستجو در یک فایل متنی شامل هزاران کلمه، یکی دیگر از ضرورت‌های کار با فایل‌های متنی است. در ادامه با چندین دستور و برنامه‌ی پرکاربرد، در پردازش متن در سیستم عامل لینوکس، آشنا می‌شوید:

دستورات پرکاربرد برای پردازش متن در لینوکس

دستور cat

با استفاده از دستور cat می‌توانید محتوای یک فایل متنی را مشاهده نمایید. برای مثال با دستور cat محتوای فایلی به نام TextFile را مشاهده می‌کنید:

دستور head

با دستور head می‌توانید، n خط اول یک فایل متنی را مشاهده نمایید. به طور پیش‌فرض تعداد ده خط اول یک فایل در نظر گرفته شده است. با آپشن n- می‌توانیم تعداد خطوط نمایش را تعیین نماییم. در شکل زیر فایل syslog که یکی از فایل‌هایی است که رویدادهای سیستم، در آن ذخیره می‌شود را مشاهده می‌نمایید:

دستور tail

با دستور tail می‌توانید، n خط آخر یک فایل متنی را مشاهده نمایید. به طور پیش‌فرض تعداد ده خط آخر یک فایل در نظر گرفته شده است. با آپشن n- می‌توانیم تعداد خطوط نمایش را تعیین نماییم.

دستور sort

با این دستور، خطوط یک فایل برحسب حروف الفبا مرتب شده و نمایش داده می‌شود. در مثال زیر یک فایل با اسامی نامرتب می‌بینید که با دستور sort مرتب شده‌است:

دستور wc

با این دستور تعداد خطوط، کلمات و حروف یک فایل متنی مشخص می‌گردد. در شکل زیر مشخصات فایل بالا به ترتیب از نظر تعداد خط، تعداد کلمات و تعداد حروف فایل را مشاهده می‌نمایید:

دستور uniq

دستور uniq خط‌های تکراری و یکسان را حذف کرده و نمایش نمی‌دهد. و تنها هر خط یکبار بیشتر نمایش داده نمی‌شود. برای این کار در ابتدا باید خطوط مرتب شده و خروجی آن را دستور uniq اجرا نماید. برای مثال فایل test.txt حاوی چندین خط تکراری می‌باشد. در ابتدا آن را مرتب کرده و دستور uniq را اجرا می‌نماییم.

دستور uniq با آپشن d- فقط خطوط تکراری را نمایش می‌دهد.

دستور cut

وقتی متنی دارای چندین ستون باشد. ستون‌های دارای جداکننده‌ (delimiter) می‌باشد. جداکننده‌ها می‌توانند، فاصله، خط‌فاصله، سمی‌کالن، کالن و یا کاراکترهای خاص دیگر باشند. با دستور cut می‌توانیم هر کدام از ستون‌های متن را حذف و بقیه را نمایش دهیم. در مثال زیر فایلی با سه ستون می‌باشد:

دستور diff

دستور diff، یکی دیگر از برنامه‌های پردازش متن در لینوکس می‌باشد که برای مقایسه‌ی بین دو فایل متنی، استفاده می‌شود. در این دستور، تفاوت‌های متنی بین دو فایل نمایش داده می‌شود.

دستور tr

دستور tr برای جایگذاری و یا حذف کاراکتر(ها)یی در یک متن استفاده می‌شود. آپشن d- برای حذف و c- برای جایگذاری استفاده می‌شود.

دستور grep

دستور grep برای جستجو در متن یا فایل متنی استفاده می‌گردد. این دستور قابلیت استفاده از regular expression را دارد. مثلا برای جستجوی کاربری به نام kazemian در فایل /etc/passwd از دستور زیر استفاده می‌گردد:

دستور sed

دستور sed یک دستور قدرتمند در نمایش و جایگذاری کلمات در یک فایل متن است. در مثال زیر کلمه‌ی mahdi را در فایل TextFile1 جستجو می‌کند و خطوط حاوی این کلمه را حذف می‌کند. d! خطوطی را که حاوی این کلمه نباشد را حذف می‌کند.

زبان برنامه‌نویسی پردازش متن awk

awk یک زبان برنامه نویسی، از نوع مفسر است. زبان برنامه‌نویسی از نوع مفسر، زبانی است که نیاز به کامپایل شدن ندارد و برنامه به صورت خط به خط در موقع اجرا، به زبان ماشین، ترجمه می‌شود. زبان awk برای پردازش متن‌، شامل جستجو و استخراج داده‌ها، طراحی شده‌است. زبان‌ awk، یک زبان داده محور است. سبک برنامه‌نویسی با awk، نوشتن برنامه‌ی تک خطی است. داده‌های awk، یا از فایل‌های متنی هستند و یا خروجی از، دستور دیگری است که توسط عمل piping، بدست آمده است. awk از regular expression یا regex برای پردازش متن‌ها، استفاده می‌کند.

awk، با توجه به الگوهای متنی(text patterns) داده شده، خط به خط فایل متنی را، جستجو می‌کند. در صورتی که در هر خط، با الگوی متنی داده شده مطابقت داشت، عمل(action) داده شده بر روی آن خطوط اعمال می‌گردد. در مثال زیر، با استفاده از awk، در حالت اول، یک فایل متنی را نمایش می‌دهد. حالت دوم، تنها ستون دوم از فایل متنی را نمایش می‌دهد.

زبان برنامه‌نویسی perl

perl یک زبان همه منظوره‌ی اسکریپتی است. ساختار پرل، شبیه زبان C است. پرل در زمینه‌های مختلفی همچون: هوش مصنوعی، بازی و طراحی اپلیکیشن کاربرد دارد. پرل، دارای قدرت بالایی، برای پردازش متن است و از regular expressions یا regex، برای پردازش متن‌ها، استفاده می‌کند.

دیدگاهتان را بنویسید