در این پست قرار است درباره پردازش متون با فیلترها صحبت کنیم، همانطور که می دونید تقریبا همه جای لینوکس متن داریم و ما میخواهیم توضیح بدیم پردازش متون به چه صورت انجام می شود.
آموزش پردازش متون با فیلترها
همانطور که در پست قبل توضیح دادیم لینوکس سه حالت دارد:
- stdin: منظور از آن Standard input یا ورودی استاندارد می باشد که در فایل تشریحی مقدار ۰ به آن تخصیص می یابد که به آن STDIN نیز گفته میشود. هر سیستم یونیکس یا لینوکس مقدار پیش فرض ورودی را از STDIN میخواند.
- stdout: منظور از آن Standard Output یا خروجی استاندارد می باشد که در فایل تشریحی مقدار ۱ به آن تخصیص می یاید که به آن STDOUT نیز گقته میشود. هر سیستم یونیکس یا لینوکس مقدار پیشفرض خروجی استاندارد را در STDOUT می نویسد.
- stderr: منظور از آن Standard Error یا خطای استاندارد می باشد که در فایل تشریحی مقدار ۲ به آن تخصیص می یابد که به آن STDERR نیز گفته میشود. هر سیستم یونیکس یا لینوکس پیام پیشفرش خطا را در STDERR می نویسد.
پایپ Piping ( | ) در لینوکس
پایپ کردن در لینوکس را می توان یکی از کاربردی ترین کار ها دانست. توسط پایپ کردن دو یا چند دستور در محیط لینوکسی خود قادر خواهید بود خروجی های مرتبی دریافت کنید و کار های مفید زیادی با سیستم لینوکسی خود انجام دهید.
حتما تا به حال برای شما پیش آمده است که تصمیم داشته اید دستوری اجرا کنید و خروجی آن دستور را به عنوان ورودی، به دستور دیگری بدهید.
دستور ls -1 یک لیست می گیرد و زیر هم می نویسد، حالا می میخواهیم آن را sort کنیم پس خروجی آن را به دستور sort می دهیم:
user@funlife:~/w/lpic/101$ ls -1 | sort -r
you
neda
lpi
amir
62
12
تغییر مسیر Redirection ( < ) در لینوکس
مفهوم بسیار ساده ولی کاربردی دارد < یعنی خروجی خود را بریز به چیز دیگر، برای مثال ما خروجی دستور ls را ریختیم داخل یک فایل متنی:
user@funlife:~/w/lpic/101$ ls -ltrh > directory_data
حالا فایل متنی directory_data را باز می کنیم:
user@funlife:~/w/lpic/101$ cat directory_data
total 0
-rw-rw-r-- 1 lpi lpi 0 Jan 4 17:33 12
-rw-rw-r-- 1 lpi lpi 0 Jan 4 17:33 62
-rw-rw-r-- 1 lpi lpi 0 Jan 4 17:33 neda
-rw-rw-r-- 1 lpi lpi 0 Jan 4 17:33 lpi
-rw-rw-r-- 1 lpi lpi 0 Jan 4 17:33 you
-rw-rw-r-- 1 lpi lpi 0 Jan 4 17:34 amir
-rw-rw-r-- 1 lpi lpi 0 Jan 4 17:37 directory_data
دستور cat
دستور cat که از کلمه لاتین Concatenate به معنی الحاق و به هم پیوستن گرفته شده یک یا چند فایل را می خواند و سپس آنها را به یک خروجی استاندارد کپی می کند و به این صورت به کار گرفته می شود : […cat file] در بیشتر موارد شما می توانید cat را در مقایسه با دستور TYPE در خط فرمان داس در نظر بگیرید.
user@funlife:~/w/lpic/101$ cat > mydata
test
this is the second line
bye
user@funlife:~/w/lpic/101$ cat mydata
test
this is the second line
bye
user@funlife:~/w/lpic/101$ cat mydata directory_data
test
this is the second line
bye
total 0
-rw-rw-r-- 1 lpi lpi 0 Jan 4 17:33 12
-rw-rw-r-- 1 lpi lpi 0 Jan 4 17:33 62
-rw-rw-r-- 1 lpi lpi 0 Jan 4 17:33 neda
-rw-rw-r-- 1 lpi lpi 0 Jan 4 17:33 lpi
-rw-rw-r-- 1 lpi lpi 0 Jan 4 17:33 you
-rw-rw-r-- 1 lpi lpi 0 Jan 4 17:34 amir
-rw-rw-r-- 1 lpi lpi 0 Jan 4 17:37 directory_data
ctrl+d در اینجا stream را تمام می کند ولی ctrl+c به طور کلی دستور را قطع میکنه
در صورتی که در cat از – استفاده کنیم به صورت عادی به کاراکتر – که میرسد از ما ورودی دریافت می کند ولی اگر ورودی دستور دیگری را به cat بدیم، ورودی استاندارد آن را بجای – قرار می دهد مانند زیر:
user@funlife:~/w/lpic/101$ sort my_file | cat my_file2 - my_file
در دستور بالا خروجی اول محتوای my_file2
را می نویسد و بعد sort محتوای my_file را جای – قرار می دهد و می نویسد و سپس دوباره خود my_file را بدون sort می نویسد.
دستور od در لینوکس
od به معنی dump files in octal and other formats است. od تو حالت عادی محتوای فایل ما رو به صورت decimal نمایش می دهد.
user@funlife:~/w/lpic/101$ od mydata
0000000 062564 072163 072012 064550 020163 071551 072040 062550
0000020 071440 061545 067543 062156 066040 067151 005145 074542
0000040 005145
0000042
در صورت استفاده از سوئیچ t- اگر c قرار دهیم (tc-) کاراکتر را نمایش می دهد ولی با a قرار دهیم (ta-) اسم کاراکتر را نمایش می دهد.
دستور split در لینوکس
از دستور split در سیستم عامل لینوکس برای تکه کردن فایل های کوچکتر استفاده می شود و شکل کلی آن به صورت زیر است:
split [options] file
split -b 300k test.pdf -d
ما یک فایل mydata داریم که محتوای آن به صورت زیر است:
user@funlife:~/w/lpic/101$ cat mydata
hello
this is second line
but as you can see we are
still writing
and this is getting longer
.
.
and longer
and longer!
user@funlife:~/w/lpic/101$ ls
mydata
حالا می خواهیم با split بگیم که 2 خط دو خط جدا کن:
user@funlife:~/w/lpic/101$ split -l 2 mydata
الان اگه ls بگیریم محتوای ما شده 5 تا فایل xaa xab xac xad xae:
user@funlife:~/w/lpic/101$ ls
mydata xaa xab xac xad xae
و اگه داخل هر کدام را که نگاه کنید دو خط از فایل اصلی داخل آن قرار دارد:
user@funlife:~/w/lpic/101$ cat xab
but as you can see we are
still writing
با سوئیچ b- می توانیم بگوییم به صورت چند bytes چدا شود، در مثال زیر ما 50 byte ی جدا کردیم:
user@funlife:~/w/lpic/101$ split -b50 mydata
و سوئیچ d- هم بجای این که خروجی ما رو به حروف جدا کند مثل xaa xab xac xad xae این کار را با عدد انجام بده xa01 xa02 xa03 xa04 xa05
حالا اگر بخواین تمام این فایل های خورد شده را مثل اول به هم وصل کنید به راحتی با دستور زیر میگیم هرچی فایل داریم که با x شروع می شود را بریز تو یک فایل به اسم originalfile
user@funlife:~/w/lpic/101$ cat x* > originalfile
wc در لینوکس
دستور WC نشآت گرفته از Word Count در سیستم عامل های Unix/Linux برای یافتن تعداد خط، کلمه، تعداد byte و کاراکترها در یک فایل مشخص و با استفاده از آپشن های متفاوت مورد استفاده قرار میگیرد. ساختار دستور wc همانند زیر میباشد.
# wc [options] filenames
در زیر آپشن ها و کاربردهای آنها لیست شده اند:
- wc -l : تعداد خطوط یک فایل را نمایش میدهد.
- wc -w : تعداد کلمات یک فایل را نمایش میدهد.
- wc -c : تعداد byte های موجود در یک فایل را نمایش میدهد.
- wc -m : تعداد کاراکترهای یک فایل را نمایش میدهد.
- wc -L : تنها طول، طولانی ترین خط در یک فایل را نمایش میدهد.
اما اکنون نحوه استفاده از دستور wc به همراه آپشن ها و مثال های موجود و محدود در این پست را بررسی میکنیم. ما برای تست این دستور از فایل tecmint.txt استفاده میکنیم. ابتدا با استفاده از دستور cat محتوای فایل را مشاهده میکنیم :
[root@tecmint ~]# cat tecmint.txt Red Hat CentOS Fedora Debian Scientific Linux OpenSuse Ubuntu Xubuntu Linux Mint Pearl Linux Slackware Mandriva
1 – یک مثال ابتدایی از دستور WC
دستور wc بدون پاس دادن هیچ گونه پارامتری یک نتیچه اولیه از فایل tecmint.txt نمایش خواهد داد. که به همراه آن 3 شماره پرینت میشود. همانند مثال زیر که عدد 12 (تعداد خطوط فایل) عدد 16 (تعداد کلمات فایل) و عدد 112 (تعداد byte های فایل) میباشند.
[root@tecmint ~]# wc tecmint.txt 12 16 112 tecmint.txt
2 – شمارش تعداد خطوط فایل
برای شمارش تعداد خط در یک فایل از آپشن l- استفاده میشود، که تعداد خطوط یک فایل را نمایش میدهد. همانند دستور زیر که تعداد خطوط یک فایل را نمایش خواهد داد. در خروجی دستور زیر اولین فیلد متعلق به تعداد شماره شده و فیلد دوم نام فایل میباشد.
[root@tecmint ~]# wc -l tecmint.txt 12 tecmint.txt
3 – نمایش تعداد کلمات
با استفاده از آپشن w- به همراه دستور wc میتوانیم تعداد کلمات یک فایل را نمایش داد. دستور زیر را برای شمارش کلمات درون یک فایل تایپ کنید.
[root@tecmint ~]# wc -w tecmint.txt 16 tecmint.txt
4 – شمارش تعداد byte ها و کاراکترها
با استفاده از آپشن های c- و m- به همراه دستور wc به ترتیب تعداد کل بایت ها و کاراکترهای موجود در یک فایل نمایش داده خواهند شد.
[root@tecmint ~]# wc -c tecmint.txt 112 tecmint.txt
[root@tecmint ~]# wc -m tecmint.txt 112 tecmint.txt
5 – نمایش طول طولانی ترین خط
دستور wc امکان استفاده از آپشن L- (ال بزرگ) را دارد که برای نمایش طول طولانی ترین خط یک فایل (از لحاظ تعداد کاراکتر) مورد استفاده قرار میگیرد. در نتیجه ما طولانی ترین خط از لحاظ کاراکتری را در یک فایل خواهیم داشت.
[root@tecmint ~]# wc -L tecmint.txt 16 tecmint.txt
6 – بررسی کردن آپشن های بیشتر WC
برای اطلاعات بیشتر و کمک درباره دستور wc به سادگی دستورات wc -help یا دستور man wc (راهنمای wc) را در شل خود اجرا کنید.
[root@tecmint ~]# wc --help Usage: wc [OPTION]... [FILE]... or: wc [OPTION]... --files0-from=F Print newline, word, and byte counts for each FILE, and a total line if more than one FILE is specified. With no FILE, or when FILE is -, read standard input. -c, --bytes print the byte counts -m, --chars print the character counts -l, --lines print the newline counts -L, --max-line-length print the length of the longest line -w, --words print the word counts --help display this help and exit --version output version information and exit Report wc bugs to [email protected] GNU coreutils home page: <http://www.gnu.org/software/coreutils/> General help using GNU software: <http://www.gnu.org/gethelp/> For complete documentation, run: info coreutils 'wc invocation'
دستورات head در tail در لینوکس
دستور head میاد 10 خط اول را برای ما نمایش می دهد:
root@ubuntu:~# head test
و یا با مثلا 5- فقط 5 خط اول رو نمایش می دهد.
root@ubuntu:~# head -5 test
دستور tali هم دیقیقا مثل head کار میکنه با این تفاوت که 10 خط آخر را نمایش می دهد.
root@ubuntu:~# tali test
و یا با مثلا 5- فقط 5 خط اخر رو نمایش می دهد.
root@ubuntu:~# tali -5 test
یک نکته کاربردی: تقریبا تمام لاگ های سیستم در آدرس /var/log/syslog ذخیره می شود، حالا با سوئیچ f- میتونیم این فایل رو رصد کنیم و هر وقت اتفاق جدیدی در سیستم رخ دهد در لحظه به ما نمایش می دهد مثل وصل کردن یک USB به سیستم:
root@ubuntu:~# tali -f /var/log/syslog
دستورات expand و unexpand و tr چیست؟
Expand میاد تموم tab ها رو در یک فایل متنی به space تغییر میده:
user@funlife:~/w/lpic/101$ cat howcool
lpi 5
sina 6
rubic 2
you 12
user@funlife:~/w/lpic/101$ od -tc howcool
0000000 j a d i \t 5 \n s i n a \t 6 \n r u
0000020 b i c \t 2 \n y o u \t 1 2 \n
0000036
user@funlife:~/w/lpic/101$ expand howcool | od -tc
0000000 j a d i 5 \n s i n a
0000020 6 \n r u b i c 2 \n y o
0000040 u 1 2 \n
0000051
Unexpand دقیقا برعکس Expand عمل می کند یعنی space ها را به tab تغییر می دهد ولی دو نکته دارد، اول این که اگه به صورت خالی از این دستور استفاده شود فقط space های اول رو تغییر میده ولی اگه قرار همه space ها را برسی کند باید از سوئیچ a- استفاده کنید. مورد دوم این که Unexpand فقط بر روی space هایی تغییر می دهد که دوتا space پشت هم باشد.
دستور tr که کوتاه شده عبارت Translate است یک ابزار خط فرمان مفید است که می تواند کاراکترها را از ورودی stdin ترجمه یا پاک نماید و آن ها را بر روی stdout بنویسد. این یک برنامه کاربردی برای دستکاری متون در خط فرمان است.
سینتکس دستور tr به صورت زیر است که در آن کاراکترها در SET1 به کاراکترهای SET2 ترجمه می شوند.
$ tr flags [SET1] [SET2]
یکی از نمونه های ساده این دستور برای تغییر حروف نوشته شده کوچک در متن به حروف انگلیسی بزرگ و برعکس است. به دستور زیر توجه کنید:
$ cat linux.txt
linux is my life
linux has changed my life
linux is best and everthing to me..:)
$ cat domains.txt | tr [:lower:] [:upper:]
LINUX IS MY LIFE
LINUX HAS CHANGED MY LIFE
LINUX IS BEST AND EVERTHING TO ME..:)
شما می توانید از دستور زیر برای تغییر همه حروغ کوچک به حروف بزرگ در فایل استفاده کنید:
$ cat linux.txt | tr [a-z] [A-Z]
LINUX IS MY LIFE
LINUX HAS CHANGED MY LIFE
LINUX IS BEST AND EVERTHING TO ME..:)
برای ذخیره کردن نتایج نوشته شده در فایل stdout برای پردازش های بعدی می توانید از دستوراتی شبیه دستور زیر استفاده کنید:
$ cat linux.txt | tr [a-z] [A-Z] >output.txt
$ cat output.txt
LINUX IS MY LIFE
LINUX HAS CHANGED MY LIFE
LINUX IS BEST AND EVERTHING TO ME..:)
در مورد ریدایرکت کردن می توانید ورودی را به کمک ریدایرکت ورودی به tr ارسال کنید و خروجی را به کمک همین دستور به فایل بفرستید:
$ tr [a-z] [A-Z] < linux.txt >output.txt
یکی دیگر از قابلیت های کاربردی این دستور این است که می توانید از فلگ -d برای پاک کردن کاراکترها استفاده کنید. مثلا برای حذف اسپیس ها در نام دامنه می توانید از دستور زیر کمک بگیرید:
$ cat domains.txt
www. tecmint. com
www. fossmint. com
www. linuxsay. com
$ cat domains.txt | tr -d ''
www.tecmint.com
www.fossmint.com
www.linuxsay.com
اگر در یک بخش از متن کاراکترهای تکراری وجود دارد ، می توانید از فلگ -s برای فشرده سازی کاراکترها استفاده کنید و تنها یک کاراکتر را نمایش دهید:
$ cat domains.txt
www.tecmint.....com
www.fossmint.com
www.linuxsay.com
$ cat domains.txt | tr -s ''
www.tecmint.com
www.fossmint.com
www.linuxsay.com
دستور زیر بیان می کند که همه حروف باید پاک شوند و تنها UID باقی بماند. برای اینکار از گزینه -c استفاده می شود:
$ echo "My UID is $UID" | tr -cd "[:digit:]\n"
OR
$ echo "My UID is $UID" | tr -d "a-zA-Z"
در مثال زیر یک خط واحد از کلمات را به خطوط مختلف تبدیل می کنیم.
$ echo "My UID is $UID"
My UID is 1000
$ echo "My UID is $UID" | tr " " "\n"
My
UID
is
1000
این گزینه به مثال قبلی مان مربوط است. شما می توانید خطوط متعددی از کلمات را به یک جمله واحد تبدیل کنید. برای اینکار از دستوری شبیه دستور زیر کمک بگیرید:
$ cat uid.txt
My
UID
is
1000
$ tr "\n" " " < uid.txt
My UID is 1000
همچنین می توانید به کمک این دستور یک کاراکتر واحد را به کاراکتر دیگری تبدیل کنید. به مثال زیر توجه نمایید:
$ echo "nextadmin.net=>Linux-HowTos,Guides,Tutorials" | tr " " ":"
nextadmin.net:=>Linux-HowTos,Guides,Tutorials
دستور pr در لینوکس
یک ابزار قدیمی برای پرینتر های خیلی قدیمی هست که امروزه تقریبا کاربردی ندارد ولی کارش این است که یک فایل متنی رو برای پرینتر های قدیمی مرتب می کند:
pr mydata
2015-01-04 17:58 mydata Page 1
hello
this is second line
but as you can see we are
still writing
and this is getting longer
.
.
and longer
and longer!
دستور nl در لینوکس
یک ابزار ساده برای شماره گذاری خط ها:
user@funlife:~/w/lpic/101$ nl mydata | head -3
1 hello
2 this is second line
3 but as you can see we are
ولی عملا دستور cat با سوئیچ n- هم دقیقا همین کار را می کند:
user@funlife:~/w/lpic/101$ cat -n mydata | head -3
1 hello
2 this is second line
3 but as you can see we are
دستور fmt در لینوکس
این دستور متن را reformat می کند یعنی به صورت پیشفرض با عرض 60 کل متن ما را پشت هم می نویسد و با سوئیچ w- می توان از 60 به هر عددی تغییر داد.
user@funlife:~/w/lpic/101$ fmt mydata
hello this is second line but as you can see we are still writing and
this is getting longer . . and longer and longer!
دستور sort و uniq در لینوکس
دستور sort که از اسمشم مشخص است شما یه ورودی بهش میدید و متن شما رو مرتب میکنه، به صورت پیشفرض بر اساس حروف الفبا اینکار را میکند. برای مثال ما دو فایل متنی به اسم های uses و howcool داریم:
user@funlife:~/w/lpic/101$ cat uses
you fedora
lpi ubuntu
rubic windows
neda mac
user@funlife:~/w/lpic/101$ cat howcool
lpi 5
sina 6
rubic 2
you 12
حالا اگه این فایل ها رو sort کنیم به این شکل می شود:
user@funlife:~/w/lpic/101$ sort howcool uses
lpi 5
lpi ubuntu
neda mac
rubic 2
rubic windows
sina 6
you 12
همانطور که دیدید میشه از چند ورودی عملیات را انجام داد.
تقریبا تمام سئویچ های sort را که در man sort وجود دارد به شکل زیر است، برای نمونه سوئیچ r- عملیات sort پیشفرض را برعکس انجام میدهد یعنی بجای A to Z از Z to A صورت می کند.
Write sorted concatenation of all FILE(s) to standard output. With no FILE, or when FILE is -, read standard input. Mandatory arguments to long options are mandatory for short options too. Ordering options: -b, --ignore-leading-blanks ignore leading blanks -d, --dictionary-order consider only blanks and alphanumeric characters -f, --ignore-case fold lower case to upper case characters -g, --general-numeric-sort compare according to general numerical value -i, --ignore-nonprinting consider only printable characters -M, --month-sort compare (unknown) < 'JAN' < ... < 'DEC' -h, --human-numeric-sort compare human readable numbers (e.g., 2K 1G) -n, --numeric-sort compare according to string numerical value -R, --random-sort shuffle, but group identical keys. See shuf(1) --random-source=FILE get random bytes from FILE -r, --reverse reverse the result of comparisons --sort=WORD sort according to WORD: general-numeric -g, human-numeric -h, month -M, numeric -n, random -R, version -V -V, --version-sort natural sort of (version) numbers within text Other options: --batch-size=NMERGE merge at most NMERGE inputs at once; for more use temp files -c, --check, --check=diagnose-first check for sorted input; do not sort -C, --check=quiet, --check=silent like -c, but do not report first bad line --compress-program=PROG compress temporaries with PROG; decompress them with PROG -d --debug annotate the part of the line used to sort, and warn about questionable usage to stderr --files0-from=F read input from the files specified by NUL-terminated names in file F; If F is - then read names from standard input -k, --key=KEYDEF sort via a key; KEYDEF gives location and type -m, --merge merge already sorted files; do not sort -o, --output=FILE write result to FILE instead of standard output -s, --stable stabilize sort by disabling last-resort comparison -S, --buffer-size=SIZE use SIZE for main memory buffer -t, --field-separator=SEP use SEP instead of non-blank to blank transition -T, --temporary-directory=DIR use DIR for temporaries, not $TMPDIR or /tmp; multiple options specify multiple directories --parallel=N change the number of sorts run concurrently to N -u, --unique with -c, check for strict ordering; without -c, output only the first of an equal run -z, --zero-terminated line delimiter is NUL, not newline --help display this help and exit --version output version information and exit
در حالت پیشفرض sort کاراکتر به کاراکتر عمل میکنه و اول هم با کاراکتر هایی که ابتدا هستن شروع به برسی می کند و مناسب برای sort عدد نیست ولی با سوئیچ n- به راحتی می توانید sort عددی انجام دهید.
user@funlife:~/w/lpic/101$ sort -n howcool uses
دستور uniq تمام موارد تکراری را حذف می کند، دستور uniq همیشه در ورودی sort شده عمل می کند یعنی شما اول باید سخقف کنید و خروجی آن را به ورودی uniq بدید، در دستور زیر uniq عمل نکرده است:
user@funlife:~/w/lpic/101$ uniq what_i_have.txt
laptop
socks
tshirt
ball
socks
glasses
ولی وقتی با sort میاد به درستی عمل می کند:
user@funlife:~/w/lpic/101$ sort what_i_have.txt | uniq
ball
glasses
laptop
socks
tshirt
و اگه با c- بیاد تعداد تکراری بودن هر کلمه را می گوید، همچنین با u- فقط مواردی که واقعا تکراری نبودن را نمایش می دهد و برعکس آن d- فقط موارد تکراری را نشان می دهد. همچنین با f1- میتونید بگید فیلد اول رو نگاه نکن و از فیلد دوم چک کن.
دستور cut در لینوکس
دستور cut به معنی قیچی کردن یا بریدن می باشد. یعنی همانطور که از قیچی برای بریدن قطعه ای از پارچه یا کاغذ استفاده می کنیم از دستور cut برای جداسازی قطعه ای از یک فایل و نمایش آن قطعه به شکلی دیگر استفاده می کنیم.
user@funlife:~/w/lpic/101$ cat howcool
lpi 5
sina 6
rubic 2
you 12
user@funlife:~/w/lpic/101$ cut -f1 howcool
lpi
sina
rubic
you
دستور paste در لینوکس
این دستور یک کار مفید و جالب انجام میده، شما دوتا فایل متنی دارید که یکی این است:
user@funlife:~/w/lpic/101$ cat howcool
lpi 5
sina 6
rubic 2
you 12
و یکی این:
user@funlife:~/w/lpic/101$ cat uses
you fedora
lpi ubuntu
rubic windows
neda mac
حالا دستور paste میاد خط اول فایل دوم را به خط اول فایل اول اضافه می کند و به ترتیب خط های بعد:
user@funlife:~/w/lpic/101$ paste howcool uses
lpi 5 you fedora
sina 6 lpi ubuntu
rubic 2 rubic windows
you 12 neda mac
دستور join در لینوکس
دستور join شبیه join در دیتابیس می باشد کهیک فایل متنی sort شده را به یک فایل متنی sort شده دیگر join میکنه. برای مثال فایل اول ما این است:
user@funlife:~/w/lpic/101$ cat howcool
lpi 5
sina 6
rubic 2
you 12
فایل دوم ما:
user@funlife:~/w/lpic/101$ cat uses
you fedora
lpi ubuntu
rubic windows
neda mac
حالا فایل اول را sort میکنیم و خروجی را در فایل دیگر به اسم howcool.sorted میریزیم:
user@funlife:~/w/lpic/101$ sort howcool > howcool.sorted
و فایل دوم هم به همین صورت sort کرده و در فایلی به اسم uses.sorted می ریزیم:
user@funlife:~/w/lpic/101$ sort uses > uses.sorted
حالا اگه این دو فایل جدید را join کنیم فقط فایل هایی نمایش داده می شود که به هم ربط داشتن و join شدن:
user@funlife:~/w/lpic/101$ join howcool.sorted uses.sorted
lpi 5 ubuntu
rubic 2 windows
you 12 fedora
دستور sed در لینوکس
با استفاده از ابزار sed میتوان به فیلتر کردن متن و همچنین جایگزین کردن برخی واژگان به واژگانی دیگر پرداخت، ما یک فایل داریم با محتوای زیر:
user@funlife:~/w/lpic/101$ cat uses
you fedora
lpi ubuntu
rubic windows
neda mac
حالا می خواهیم همه ubuntu ها را به debian تغییر دهیم، پس به کمک s این کار را می کنیم:
user@funlife:~/w/lpic/101$ sed 's/ubuntu/debian/' uses
you fedora
lpi debian
rubic windows
neda mac
سلام و درود خدمت شما
ممنون بابت مطلب جامع و مفیدتون
فقط یه نکته هستش اینکه دستوری که ده خط آخر رو نمایش میده tail هستش (:
اموزش فوق العاده بود ممنونم