Tag Archives: এক্সপ্রেশন

ইউনিক্স – SED এর সাথে রেগুলার এক্সপ্রেশন (Unix – Regular Expressions with SED)

Huge Sell on Popular Electronics

রিদওয়ান বিন শামীম

 

আজকের টিউটোরিয়ালে আমরা দেখব কীভাবে sed তে রেগুলার এক্সপ্রেশন ব্যবহার করা হয়।

 

এসইডিকে ইনভোক করা

পাইপের মাধ্যমে এসইডিতে ডাটা প্রেরণ করে একে ইনভোক করা যায়,


$ cat /etc/passwd | sed
Usage: sed [OPTION]... {script-other-script} [input-file]...
 
  -n, --quiet, --silent
                 suppress automatic printing of pattern space
  -e script, --expression=script
...............................

 

এসইডির জন্য সাধারণ সিনট্যাক্স

এসইডির জন্য সাধারণ সিনট্যাক্স এরকম,


/pattern/action

 

এখানের স্ল্যাস ক্যারেক্টারগুলো ডিলিমিটার হিসেবে ব্যবহৃত হয়।

রেঞ্জ বিবরণ
p লাইন প্রিন্ট করে
d লাইন ডিলিট করে
s/pattern1/pattern2/ প্যাটার্ন ১ এর ঘটনাকে প্যাটার্ন ২ দ্বারা প্রতিস্থাপন করে।

 

 

এসইডিতে লাইন ডিলিট করতে

লাইন ডিলিট করতে নিচের কম্যান্ড ব্যবহৃত হয়,


$ cat /etc/passwd | sed 'd'
$

 

cat command ছাড়া এই কম্যান্ডও অনুরূপ কাজ করে,

 


$ sed -e 'd' /etc/passwd
$

এসইডি এড্রেসিং

এসইডি কম্যান্ডে বেসিক এড্রেস যোগ করতে যে কম্যান্ড ব্যবহার করতে পারি,

 


$ cat /etc/passwd | sed '1d' |more
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
$

এসইডি কম্যান্ডে এড্রেস রেঞ্জ নির্ধারণ করতে আমরা  যে কম্যান্ড ব্যবহার করতে পারি তা হল,


$ cat /etc/passwd | sed '1, 5d' |more
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh
$

উপরের কম্যান্ড এক থেকে পাঁচ নাম্বার পর্যন্ত লাইন ডিলিট করতে ফলপ্রসূ হবে।

 

আরও কিছু এড্রেস রেঞ্জের উদাহরণ,

রেঞ্জ
'4,10d'
'10,4d'
'4,+5d'
'2,5!d'
'1~3d'
'2~2d'
'4,10p'
'4,d'
',10d'

 

মনে রাখা দরকার, p একশন ব্যবহারের সময় পুনরাবৃত্তি এড়াতে -n অপশন ব্যবহার করা উচিৎ,

 


$ cat /etc/passwd | sed -n '1,3p'

এই কম্যান্ডকে -n ছাড়া ব্যবহার করলে যা পাচ্ছি,


$ cat /etc/passwd | sed '1,3p'

সাবস্টিটিউশন কম্যান্ড

স্ট্রিং root কে amrood স্ট্রিং দ্বারা প্রতিস্থাপিত করতে কম্যান্ড,

 


$ cat /etc/passwd | sed 's/root/amrood/'
amrood:x:0:0:root user:/root:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
..........................

এসইডিকে গ্লোবাল সাবস্টিটিউশনের নির্দেশ দিতে কম্যান্ডের শেষে g লাগাতে হয়,

 


$ cat /etc/passwd | sed 's/root/amrood/g'
amrood:x:0:0:amrood user:/amrood:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh

 

 

সাবস্টিটিউশন ফ্ল্যাগ

অনেকগুলো সাবস্টিটিউশন ফ্ল্যাগ আছে যার মধ্যে একই সময়ে একাধিককে স্পেসিফাই করে দিতে পারি আমরা,

 

ফ্ল্যাগ
g
NUMBER
p
w FILENAME
I or i
M or m

 

অলটারনেটিভ স্ট্রিং সেপারেটর ব্যবহার করা

s এর পড়ে কাঙ্খিত ক্যারেক্টার ব্যবহার করে বিভিন্ন সেপারেটর ব্যবহার করা যায়।

 


$ cat /etc/passwd | sed 's:/root:/amrood:g'
amrood:x:0:0:amrood user:/amrood:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh

এম্পটি স্পেস দ্বারা রিপ্লেস করা

/etc/passwd ফাইল থেকে রুট স্ট্রিং ডিলিট করার জন্য এম্পটি সাবস্টিটিউশন স্ট্রিং ব্যবহার করতে পারি,

 


$ cat /etc/passwd | sed 's/root//g'
:x:0:0::/:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh

এড্রেস সাবস্টিটিউশন

কেবল দশম লাইনের string shকে string quiet দ্বারা  সাবস্টিটিউট করতে,


$ cat /etc/passwd | sed '10s/sh/quiet/g'
root:x:0:0:root user:/root:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/quiet

একইভাবে, এড্রেস রেঞ্জ সাবস্টিটিউশন করতে,

 


$ cat /etc/passwd | sed '1,5s/sh/quiet/g'
root:x:0:0:root user:/root:/bin/quiet
daemon:x:1:1:daemon:/usr/sbin:/bin/quiet
bin:x:2:2:bin:/bin:/bin/quiet
sys:x:3:3:sys:/dev:/bin/quiet
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh

ম্যাচিং কম্যান্ড

-n অপশনের সাথে p অপশন ব্যবহার করে ম্যাচিং লাইন প্রিন্ট করতে পারি,


$ cat testing | sed -n '/root/p'
root:x:0:0:root user:/root:/bin/sh
[root@ip-72-167-112-17 amrood]# vi testing
root:x:0:0:root user:/root:/bin/sh
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh

রেগুলার এক্সপ্রেশন ব্যবহার করা

daemon দিয়ে করা লাইন খুঁজে বের করে ডিলিট করতে,

 


$ cat testing | sed '/^daemon/d'
root:x:0:0:root user:/root:/bin/sh
bin:x:2:2:bin:/bin:/bin/sh
sys:x:3:3:sys:/dev:/bin/sh
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/bin/sh
man:x:6:12:man:/var/cache/man:/bin/sh
mail:x:8:8:mail:/var/mail:/bin/sh
news:x:9:9:news:/var/spool/news:/bin/sh
backup:x:34:34:backup:/var/backups:/bin/sh

 

sh দিয়ে শেষ এমন লাইনের ক্ষেত্রে ডিলিটের কম্যান্ড,

 


$ cat testing | sed '/sh$/d'
sync:x:4:65534:sync:/bin:/bin/sync

 

রেগুলার এক্সপ্রেশনের জন্য গুরুত্বপূর্ণ এমন চারটি স্পেশাল ক্যারেক্টার,

ক্যারেক্টার
^
$
.
*
[chars]

 

ম্যাচিং ক্যারেক্টার

ম্যাচিং ক্যারেক্টারের কিছু প্যাটার্ন দেয়া হল,

এক্সপ্রেশন
/a.c/
/a*c/
/[tT]he/
/^$/
/^.*$/
/ */
/^$/

বহুল ব্যবহৃত কিছু ক্যারেক্টার সেট নিচে দেয়া হল,

সেট
[a-z]
[A-Z]
[a-zA-Z]
[0-9]
[a-zA-Z0-9]

 

ক্যারেক্টার ক্লাস কীওয়ার্ড

/etc/syslog.conf ফাইলের উদাহরণে এলফাবেট ক্যারেক্টার ক্লাস কীওয়ার্ড ব্যবহৃত হয়েছে।


$ cat /etc/syslog.conf | sed -n '/^[[:alpha:]]/p'
authpriv.*                         /var/log/secure
mail.*                             -/var/log/maillog
cron.*                             /var/log/cron
uucp,news.crit                     /var/log/spooler
local7.*

 

জিএনইউ এসইডিতে পাওয়া ক্যারেক্টার ক্লাস কীওয়ার্ডের একটি তালিকা নিচে দেয়া হল,

ক্যারেক্টার ক্লাস
[[:alnum:]]
[[:alpha:]]
[[:blank:]]
[[:cntrl:]]
[[:digit:]]
[[:graph:]]
[[:lower:]]
[[:print:]]
[[:punct:]]
[[:space:]]
[[:upper:]]
[[:xdigit:]]

 

এম্পারসেন্ড রেফারেন্সিং

ধরা যাক, নিচের ফাইলে ফোননাম্বার আছে, এতে এরিয়া কোড বসাতে হবে,

 


5555551212
5555551213
5555551214
6665551215
6665551216
7775551217

এম্পারসেন্ড রিপ্লেসমেন্ট ক্যারেক্টার বসিয়ে এটি করতে হলে যা করতে হবে তা হল,

 


$ sed -e 's/^[[:digit:]][[:digit:]][[:digit:]]/(&)/g' phone.txt
(555)5551212
(555)5551213
(555)5551214
(666)5551215
(666)5551216
(777)5551217

মাল্টিপল এসইডি কম্যান্ড ব্যবহার

সিঙ্গেল এসইডি কম্যান্ডে মাল্টিপল এসইডি কম্যান্ড ব্যবহার করতে নিচের কম্যান্ড ব্যবহার করতে পারি,

 


$ sed -e 'command1' -e 'command2' ... -e 'commandN' files

একই কৌশল ব্যবহার করে ফোন নাম্বার উদাহরণকে আমরা এভাবে লিখতে পারি,

 


$ sed -e 's/^[[:digit:]]\{3\}/(&)/g'  \
                      -e 's/)[[:digit:]]\{3\}/&-/g' phone.txt
(555)555-1212
(555)555-1213
(555)555-1214
(666)555-1215
(666)555-1216
(777)555-1217

ব্যাক রেফারেন্স

ধরা যাক, অনুমিত ফোন টেক্সটে এই টেক্সটগুলো আছে,

 


(555)555-1212
(555)555-1213
(555)555-1214
(666)555-1215
(666)555-1216
(777)555-1217

এতে নিচের কম্যান্ড প্রয়োগ করা যেতে পারে,

 


$ cat phone.txt | sed 's/\(.*)\)\(.*-\)\(.*$\)/Area \
                       code: \1 Second: \2 Third: \3/'
Area code: (555) Second: 555- Third: 1212
Area code: (555) Second: 555- Third: 1213
Area code: (555) Second: 555- Third: 1214
Area code: (666) Second: 555- Third: 1215
Area code: (666) Second: 555- Third: 1216
Area code: (777) Second: 555- Third: 1217

 

জাভাস্ক্রিপ্ট রেগুলার এক্সপ্রেশন (JavaScript Regular Expressions in Bangla)

Huge Sell on Popular Electronics

দীপঙ্কর সাহা

 

আজকে আপনাদের মাঝে একটি বিষয় শেয়ার করার জন্য হাজির হলাম।তা হল কিভাবে Java Script Regular  Expressions korte hoi. একটি রেগুলার এক্সপ্রেশন হল একটি অনুসন্ধান প্যাটার্ন যেটা টেক্সট এবং টেক্সট অপারেশন প্রতিস্তাপনের জন্য ব্যাবহার করা হয় বা ব্যাবহার করা যেতে পারে। এই রেগুলার এক্সপ্রেশন হল একটি অক্ষর বা একটি জটিল প্যাটার্ন ও হতে পারে। এই রেগুলার এক্সপ্রেশনটা টেক্সট অনুসন্ধানের সব ধরনের সঞ্চালন এবং টেক্সট অপারেশন প্রতিস্থাপনে ব্যাবহার করা যেতে পারে।

Syntax


Var patt = /bangle.SalearningSchool/ i

 

এই উধাহরনের বিষয় টা ব্যাখ্যা হল  /bangle.SalearningSchool/ i   একটি রেগুলার এক্সপ্রেশন

bangle.SalearningSchool  হল একটি অনুসন্ধান প্যাটার্ন যা অনিসন্ধান বক্স এ ব্যাবহার করা যেতে পারে।আর I হল একটি পরিবর্তক বা অনুসন্ধান বক্স হতে পরিবর্তন হয়।

 

স্ট্রিং মেথড এর ব্যবহার

জাভাস্ক্রিপ্ট, রেগুলার এক্সপ্রেশন এ প্রায়ই দুই স্ট্রিং পদ্ধতি ব্যবহার করা হয়। তা হল search() এবং replace()।

সার্চ মেথড বা পদ্ধতি এমন একটি ম্যাচ অনুসন্ধান করার জন্য একটি অভিব্যক্তি ব্যবহার করে, এবং ম্যাচ অবস্থান প্রদান করে.

রিপ্লেস মেথড বা পদ্ধতি এমন যা প্যাটার্ন প্রতিস্থাপিত হয় যেখানে একটি পরিবর্তিত স্ট্রিং প্রদান করে।

 

রেগুলার এক্সপ্রেশন এর সাথে search() স্ট্রিং এর ব্যবহার

এখানে অনুসন্ধান পদ্ধতি সার্চ যুক্তি হিসাবে একটি স্ট্রিং গ্রহণ করতে হবে. স্ট্রিং যুক্তি একটি রেগুলার এক্সপ্রেশন রূপান্তরিত করা হবে। উদাহরন সরুপ

একটি স্ট্রিং সার্চ এর ব্যাবহার নিচে দেখানো হলঃ


var str = "Visit W3Schools";
var n = str.search(/bangle.SalearningSchool/i);

 

রেগুলার এক্সপ্রেশন এর সাথে পরিবর্তন বা replace() স্ট্রিং এর ব্যবহার

উদাহরন সরুপ একটি স্ট্রিং রিপ্লেস এর ব্যাবহার নিচে দেখানো হলঃ


var str = "Visit Microsoft!";
 var res = str.replace(/bangle.SalearningSchool/i, "bangle.SalearningSchool");

 

রেগুলার এক্সপ্রেশন মোডিফায়ারস

মোডিফায়ারস বর্ণনা
i এটা অসংবেদি বা ইনসেনসিটিভ সঞ্চালন করতে বেবহারিত হয়।
g একটি আন্তর্জাতিক ম্যাচ সঞ্চালন করতে ব্যবহৃত হয়
m একাধিক সঞ্চালন করতে ব্যবহৃত হয়

 

রেগুলার এক্সপ্রেশন প্যাটার্নস

এক্সপ্রেসন্স বর্ণনা
[abc] বন্ধনীর মধ্যে অক্ষর কোন খুঁজুন
[0-9] বন্ধনীর মধ্যে সংখ্যার কোন খুঁজুন
(x/y) পৃথক বিকল্প কোনো খুঁজুন

 

Metacharacters একটি বিশেষ অর্থ দিয়ে অক্ষর

Metacharacters বর্ণনা
/d একটি সংখ্যা খুজা হয়
/s একটি হোয়াইটস্পেস অক্ষর খুঁজুন
/b শুরুতে বা একটি শব্দের শেষে একটি মিল খুঁজুন
/uxxxx হেক্সাডেসিমেল সংখ্যা xxxx দ্বারা নির্দিষ্ট ইউনিকোড অক্ষর খুঁজুন

 

Quantifiers define quantities

Quantifiers বর্ণনা
n+ অন্তত এক এন রয়েছে যে কোনো স্ট্রিং ম্যাচ
n* এন শূন্য বা তার বেশি দৃষ্টিগোচর রয়েছে যে কোনো  স্ট্রিং ম্যাচ
n? এন শূন্য বা একটি ঘটনার মধ্যে রয়েছে যে যেকোনো স্ট্রিং ম্যাচ

 

অ্যাঙ্গুলার জেএস এক্সপ্রেশন (AngularJS Expressions in Bangla)

Huge Sell on Popular Electronics

অ্যাঙ্গুলার জেএস (AngularJS) এক্সপ্রেশন (Expressions)

Article By: Protap Chandra

 

AngularJS Expressions ব্যবহার করে HTML এর সঙ্গে ডাটা আবদ্ধ (bind) করা হয়।

AngularJS expression দ্বিতীয় বন্ধনীর ভেতর লেখা হয়: {{ expression }}.

expression HTML এর সঙ্গে ng-bind directive এর মতো একই ভাবে ডাটা আবদ্ধ করে।

ঠিক যেখানে expression লেখা হবে সেখানেই AngularJS আউটপুট প্রদান করবে।

AngularJS expression এর সঙ্গে JavaScript expression এর মিল পাওয়া যায়: এরা literals, operators এবং variables ধারণ করতে পারে।

যেমন: {{ 5 + 5 }} or {{ firstName + " " + lastName }}

 

AngularJS Expressions এর উদাহরণ:


<!DOCTYPE html>
<html>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body>

<div ng-app="">
  <p>My first expression: {{ 5 + 5 }}</p>
</div>

</body>
</html>

 

ফলাফল :


My first expression: 10


 

 

আপনি যদি ng-app directive অপসারণ করেন, তাহলে HTML এখানকার expression কে হুবহু প্রদর্শন করবে। যুক্তিটির সমাধান করবে না।

ng-app directive ছাড়া AngularJS উদাহরণ:


<!DOCTYPE html>
<html>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<body>

<div>
  <p>My first expression: {{ 5 + 5 }}</p>
</div>

</body>
</html>

ng-app directive ব্যবহার না করায় এই উদাহরণের ‌‌আউপুট আসবে: My first expression: {{ 5 + 5 }}

 

AngularJS Numbers

AngularJS number ঠিক JavaScript number এর মতোই।

উদাহরণ:


<div ng-app="" ng-init="quantity=1;cost=5">

<p>Total in dollar: {{ quantity * cost }}</p>

</div>

 

এই উদাহরণের আউটপুট আসবে :


Total in dollar: 5


ng-bind ব্যবহার করে একে ভিন্নভাবে লেখা যায়:


<div ng-app="" ng-init="quantity=1;cost=5">

<p>Total in dollar: <span ng-bind="quantity * cost"></span></p>

</div>

 

AngularJS Strings

AngularJS string ঠিক JavaScript string এর মতোই

উদাহরণ:


<div ng-app="" ng-init="firstName='John';lastName='Doe'">

<p>The name is {{ firstName + " " + lastName }}</p>

</div>

 

এই উদাহরণের আউটপুট আসবে:


The name is: John Doe


 

ng-bind ব্যবহার করে উদারহণটি এভাবে লেখা যায়:


<div ng-app="" ng-init="firstName='John';lastName='Doe'">

<p>The name is <span ng-bind="firstName + ' ' + lastName"></span></p>

</div>

এখানেও একই আউটপুট আসবে।

 

AngularJS Objects

AngularJS objects ঠিক JavaScript object এর মতো

উদাহরণ:


<div ng-app="" ng-init="person={firstName:'John',lastName:'Doe'}">
<p>নাম হল: {{ person.lastName }}</p>
</div>

 

এই উদাহরণের আউটপুট আসবে:


নাম হল: Doe


ng-bind ব্যবহার করে উদারহরণটি এভাবে লেখা যায়:


<div ng-app="" ng-init="person={firstName:'John',lastName:'Doe'}">
<p>নাম হল: <span ng-bind="person.lastName"></span></p>
</div>

 

এখানেও একই আউটপুট আসবে।

 

AngularJS Arrays

AngularJS array ঠিক JavaScript array এর মতো।

উদাহরণ:


<div ng-app="" ng-init="points=[1,15,19,2,40]">

<p>তৃতীয় অবস্থানে আছে: {{ points[2] }}</p>

</div>


 

উদাহরণে আউটপুট আসবে:


তৃতীয় অবস্থানে আছে 19.


 

 

ng-bind ব্যবহার করে উদাহরণটি এভাবে লেখা যায়:


<div ng-app="" ng-init="points=[1,15,19,2,40]">
<p>তৃতীয় অবস্থানে আছে <span ng-bind="points[2]"></span></p>
</div>

 

আশা করি খুব সহজে আপনারা অ্যাঙ্গুলার জেএস (AngularJS) এক্সপ্রেশন (Expressions) শিখতে পেরেছেন।

 

AngularJS Home পেজে যাওয়ার জন্য এখানে ক্লিক করুন

 

লেকচার – ০৩: সি++ প্রোগ্রামিং- ভেরিয়েবল এবং এক্সপ্রেশন (Variables and Expressions)

Huge Sell on Popular Electronics