Ravindra BagaleCourses & study guides English

Linux sed Command Tutorial: Find आणि Replace, Lines Delete आणि Files In Place Edit

sed म्हणजे stream editor. तो text line by line वाचतो, साध्या commands ने बदलतो आणि result print करतो, editor न उघडता. Find आणि replace, lines delete, range print, lines जोडणं आणि शेकडो servers वर scripts मधून config files edit करायला वापरतात.

या chapter मध्ये तुम्ही काय शिकाल

  • s/// ने find आणि replace
  • -i आणि backups ने files in place safely edit
  • Addresses आणि ranges ने lines निवडा
  • Lines delete, print, insert, append आणि change
  • -E groups आणि back-references
  • अनेक commands आणि safe config edits

1. रोजचं उदाहरण: लग्नपत्रिकेची list सुधारणं

हे का लागतं?

अनिलने लग्नपत्रिकेसाठी 300 पाहुण्यांची नावं type केली. नंतर कळलं: सगळीकडे 'Pune' ऐवजी 'Poona' लिहिलंय, 'cancelled' लिहिलेली प्रत्येक line delete करायची, बहिणीसाठी फक्त 50 ते 80 पाहुणे print करायचे, काही नावांआधी 'Shri' जोडायचं, आणि चूक झाली तर म्हणून मूळ list चा backup हवा.

हे काय आहे?

Poona चं Pune = sed 's/Poona/Pune/g'. cancelled delete = sed '/cancelled/d'. पाहुणे 50-80 = sed -n '50,80p'. Shri जोडा = sed 's/^/Shri /'. Backup = sed -i.bak.

कसं करायचं (step by step)

sed प्रत्येक line वर कसं काम करतोएक line pattern space मधे वाचाप्रत्येक command चा address: ही line जुळते का?Command चालवा (s, d, p, i, a, c)Pattern space print (-n किंवा d नसेल तर)पुढची line-i असेल तर result file मधे परत लिहा
-i शिवाय sed file कधीच बदलत नाही. फक्त print करतो.

2. s/// ने find आणि replace

हे का लागतं?

File मधे hostname, version किंवा path हाताने बदलणं slow आणि चुका होणारं.

हे काय आहे?

sed 's/old/new/' प्रत्येक line वरचा पहिला match बदलतो. Flags: g सगळे matches, i case ignore (GNU), 2 फक्त दुसरा match, p बदललेली line print. कोणताही character separator होऊ शकतो: s#/old/path#/new/path# ने slashes escape करावे लागत नाहीत. Replacement मधे & म्हणजे 'पूर्ण match'. Shell variable आत हवं असेल तेव्हाच double quotes.

Formकाय करतो
s/a/b/प्रत्येक line वरचा पहिला a
s/a/b/gप्रत्येक a
s/a/b/2फक्त दुसरा a
s/a/b/giप्रत्येक a, कोणताही case
s#/x#/y#दुसरा separator
s/.*/[&]/& = पूर्ण match

कसं करायचं (step by step)

  1. प्रत्येक line वर पहिला match.
echo 'Poona to Poona' | sed 's/Poona/Pune/'

Output:

Pune to Poona

याचा अर्थ: फक्त पहिला बदलला.

  1. सगळे.
echo 'Poona to Poona' | sed 's/Poona/Pune/g'

Output:

Pune to Pune

याचा अर्थ: g = global.

  1. दुसऱ्या separator ने path बदला.
echo 'root /var/www/old;' | sed 's#/var/www/old#/srv/shop#'

Output:

root /srv/shop;

याचा अर्थ: प्रत्येक / escape नको.

  1. Shell variable वापरा.
V=2.4.1; sed "s/^version=.*/version=$V/" app.ini

Output:

name=shop
version=2.4.1

याचा अर्थ: Double quotes मुळे $V expand.

  1. & ने match wrap.
echo 'order 8812 and 8813' | sed -E 's/[0-9]+/#&/g'

Output:

order #8812 and #8813

याचा अर्थ: & जुळलेला number परत ठेवतो.

  1. फक्त बदललेल्या lines print.
sed -n 's/ERROR/E!/p' app.log | head -2

Output:

10:12:44 E! payment timeout
10:15:02 E! db refused

याचा अर्थ: -n normal print थांबवतो; p बदललेल्या print.

  1. शेवटचे spaces आणि Windows CR काढा.
sed -i 's/[[:space:]]*$//' deploy.sh && cat -A deploy.sh | head -1

Output:

#!/bin/bash$

याचा अर्थ: [[:space:]] मधे \r पण येतो.

3. -i ने files in place edit (आणि backup ठेवा)

हे का लागतं?

Scripts आणि automation ने खऱ्या files बदलायच्या, फक्त print नाही. एक चुकीचा sed -i server बिघडवू शकतो, म्हणून backups महत्त्वाचे.

हे काय आहे?

sed -i file edit करतो. sed -i.bak मूळ file file.bak म्हणून ठेवतो. macOS (BSD sed) वर backup नसेल तर sed -i '' लिहावं लागतं. आधी -i शिवाय dry-run करा, किंवा diff बघा: sed 's/a/b/' f | diff f -. -i file replace करतो, त्यामुळे owner बदलू शकतो किंवा symlinks तुटू शकतात; target link असेल तर --follow-symlinks.

कसं करायचं (step by step)

  1. आधी dry run.
sed 's/^Port 22$/Port 2222/' /etc/ssh/sshd_config | diff /etc/ssh/sshd_config -

Output:

17c17
< Port 22
---
> Port 2222

याचा अर्थ: नेमकं काय बदलेल ते दाखवतो.

  1. Backup सह edit.
sudo sed -i.bak 's/^Port 22$/Port 2222/' /etc/ssh/sshd_config && ls /etc/ssh/sshd_config*

Output:

/etc/ssh/sshd_config  /etc/ssh/sshd_config.bak

याचा अर्थ: मूळ .bak मधे safe.

  1. Restart आधी validate.
sudo sshd -t && sudo systemctl reload sshd

Output:

(no output)

याचा अर्थ: Config test केल्याशिवाय SSH restart नको.

  1. अनेक files एकदम.
sed -i 's/old-db.local/db.prod.local/g' config/*.yml && grep -l db.prod.local config/*.yml

Output:

config/app.yml
config/worker.yml

याचा अर्थ: प्रत्येक .yml update.

  1. Backup मधून restore.
sudo mv /etc/ssh/sshd_config.bak /etc/ssh/sshd_config

Output:

(no output)

याचा अर्थ: Undo म्हणजे एक move.

4. Addresses: कोणत्या lines ते निवडा

हे का लागतं?

अनेकदा फक्त line 5, फक्त एका section मधल्या lines, किंवा एखादा word असलेल्या lines बदलायच्या असतात.

हे काय आहे?

Command आधी address लावा. N line number, $ शेवटची line, /re/ regex जुळणाऱ्या lines, N,M range, /start/,/end/ regex range, N~S N पासून प्रत्येक S-वी line (GNU), addr! addr सोडून सगळ्या. उदाहरण: sed '/^\[db\]/,/^\[/s/host=.*/host=10.0.0.9/' फक्त [db] section मधे host बदलतो.

Addressनिवडतो
5Line 5
$शेवटची line
2,8Lines 2 ते 8
/ERROR/ERROR असलेल्या lines
/start/,/end/start पासून end match पर्यंत
1~2विषम lines
/^#/!# ने सुरू न होणाऱ्या

कसं करायचं (step by step)

  1. Lines 20 ते 25 print.
sed -n '20,25p' app.log

Output:

(6 lines)

याचा अर्थ: -n आणि p फक्त range print.

  1. शेवटची line.
sed -n '$p' app.log

Output:

10:59:59 INFO shutdown

याचा अर्थ: $ म्हणजे शेवटची line.

  1. फक्त section मधे बदल.
sed '/^\[db\]/,/^\[/s/^host=.*/host=10.0.0.9/' app.ini

Output:

[web]
host=0.0.0.0
[db]
host=10.0.0.9

याचा अर्थ: Web host ला हात नाही.

  1. दोन वेळांमधले logs.
sed -n '/^10:00/,/^10:05/p' app.log | head -3

Output:

10:00:01 INFO start
10:00:02 GET /
10:01:10 GET /cart

याचा अर्थ: Time windows साठी regex range उत्तम.

  1. Comments सोडून प्रत्येक line वर replace.
sed '/^#/!s/8080/9090/' app.conf

Output:

# default 8080
port=9090

याचा अर्थ: ! address उलटा करतो.

  1. दर दुसरी line.
seq 1 6 | sed -n '0~2p'

Output:

2
4
6

याचा अर्थ: first~step (GNU sed).

5. Lines delete, print, insert, append आणि change

हे का लागतं?

Replace शिवाय lines काढायच्या, एका line नंतर नवी setting जोडायची, किंवा पूर्ण line बदलायची असते.

हे काय आहे?

d delete, p print, i\ text आधी insert, a\ text नंतर append, c\ text पूर्ण line बदलतो, = line number, q थांबा (मोठ्या files साठी उत्तम), r file file आत वाचतो, w file जुळणाऱ्या lines बाहेर लिहितो. GNU sed मधे one-line forms: '3i text', '/re/a text'.

कसं करायचं (step by step)

  1. Comments आणि blank lines delete.
sed '/^#/d; /^$/d' nginx.conf | head -3

Output:

user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;

याचा अर्थ: ; ने दोन commands.

  1. पहिली line (header) delete.
sed '1d' sales.csv | head -2

Output:

2026-10-01,Pune,4500
2026-10-01,Nashik,3200

याचा अर्थ: tail -n +2 सारखं.

  1. Line 1 आधी line insert.
sed '1i # Managed by Ansible - do not edit' app.conf | head -2

Output:

# Managed by Ansible - do not edit
port=8080

याचा अर्थ: i आधी insert.

  1. Match नंतर setting append.
sed '/^\[mysqld\]/a max_connections=500' my.cnf

Output:

[mysqld]
max_connections=500
datadir=/var/lib/mysql

याचा अर्थ: a जुळलेल्या line नंतर.

  1. पूर्ण line बदला.
sed '/^SELINUX=/c SELINUX=permissive' /etc/selinux/config | grep ^SELINUX=

Output:

SELINUX=permissive

याचा अर्थ: c पूर्ण line बदलतो, जे असेल ते.

  1. मोठ्या file वर लवकर थांबा.
sed '10q' huge.log | wc -l

Output:

10

याचा अर्थ: q line 10 नंतर थांबतो. head सारखं, sed मधे.

  1. जुळणाऱ्या lines दुसऱ्या file मधे.
sed -n '/ERROR/w errors.txt' app.log && wc -l errors.txt

Output:

27 errors.txt

याचा अर्थ: w pipe शिवाय matches save.

6. Extended regex, groups आणि back-references

हे का लागतं?

Parts swap करायचे, dates reformat करायच्या किंवा match चा भाग ठेवून बाकी बदलायचं.

हे काय आहे?

sed -E extended regex चालू करतो (backslash शिवाय + ? {} | ( )). ( ) group पकडतो, replacement मधे \1 \2 groups परत ठेवतात. GNU sed मधे replacement मधे \U uppercase, \L lowercase आणि \E case change बंद.

कसं करायचं (step by step)

  1. First आणि last name swap.
echo 'Bagale Ravindra' | sed -E 's/(\w+) (\w+)/\2 \1/'

Output:

Ravindra Bagale

याचा अर्थ: \1 पहिला group, \2 दुसरा.

  1. Date reformat.
echo '2026-10-25' | sed -E 's/([0-9]{4})-([0-9]{2})-([0-9]{2})/\3\/\2\/\1/'

Output:

25/10/2026

याचा अर्थ: तीन groups, नव्या क्रमाने.

  1. Logs मधे card numbers mask.
echo 'card=4111111111111111 ok' | sed -E 's/([0-9]{4})[0-9]{8}([0-9]{4})/\1********\2/'

Output:

card=4111********1111 ok

याचा अर्थ: पहिले आणि शेवटचे 4 digits ठेवतो.

  1. Key name uppercase.
echo 'db_host=10.0.0.9' | sed -E 's/^([a-z_]+)=/\U\1\E=/'

Output:

DB_HOST=10.0.0.9

याचा अर्थ: \U ... \E (GNU sed).

  1. Value बाहेर काढा.
sed -nE 's/.*version="([^"]+)".*/\1/p' package.xml

Output:

3.2.0

याचा अर्थ: फक्त पकडलेली version print.

7. अनेक commands, scripts आणि safe सवयी

हे का लागतं?

खऱ्या edits ला एका pass मधे अनेक steps लागतात, आणि परत परत चालवायला safe (idempotent) हवेत.

हे काय आहे?

Commands ; किंवा -e ने जोडा, किंवा एका address खाली अनेक commands साठी { }. मोठे edits file मधे ठेवून sed -f edits.sed. Edits idempotent करायला पूर्ण current line (^key=.*) match करा, म्हणजे दुसऱ्या run ला काही बदलत नाही. Structured files (JSON, YAML, XML) साठी jq, yq किंवा xmlstarlet; मोठ्या configs साठी Ansible lineinfile.

कसं करायचं (step by step)

  1. एका run मधे दोन edits.
sed -e 's/dev/prod/' -e '/debug/d' app.conf

Output:

env=prod
port=8080

याचा अर्थ: -e परत परत.

  1. एका address खाली commands.
sed '/^\[db\]/,/^\[/{s/^user=.*/user=app/; s/^port=.*/port=5432/}' app.ini | sed -n '/\[db\]/,$p'

Output:

[db]
user=app
port=5432

याचा अर्थ: { } दोन्ही फक्त [db] मधे.

  1. sed script file.
printf 's/Poona/Pune/g\n/cancelled/d\n' > fix.sed && sed -f fix.sed guests.txt | wc -l

Output:

288

याचा अर्थ: 12 cancelled lines गेल्या आणि शहर सुधारलं.

  1. Idempotent set-or-add.
grep -q '^MaxAuthTries' /etc/ssh/sshd_config && sudo sed -i 's/^MaxAuthTries.*/MaxAuthTries 3/' /etc/ssh/sshd_config || echo 'MaxAuthTries 3' | sudo tee -a /etc/ssh/sshd_config

Output:

(no output, or MaxAuthTries 3)

याचा अर्थ: अनेक वेळा safely चालतं.

  1. प्रत्येक line ला number (= command).
sed -n '/ERROR/=' app.log | head -3

Output:

57
90
131

याचा अर्थ: = प्रत्येक match चा line number.

8. अनेक industries मधली खरी उदाहरणं

हे का लागतं?

तेच Linux skill प्रत्येक प्रकारच्या company मध्ये लागतं. वेगवेगळ्या ठिकाणी पाहिलं की लक्षात राहतं.

हे काय आहे?

प्रत्येक row म्हणजे एक काल्पनिक team. कोण हे वापरतं आणि कसं ते दाखवते.

कसं करायचं (step by step)

Team आणि शहरते कसं वापरतातCommand
Sanjay, Infra automation, PuneBackups सह 400 servers वर SSH hardensed -i.bak 's/^#\?PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
Elena, CI team, WarsawRelease वेळी files मधे version bumpsed -i "s/^version=.*/version=$TAG/" gradle.properties
Tunde, fintech, LagosLogs पाठवण्याआधी card numbers masksed -E 's/[0-9]{12}([0-9]{4})/XXXX\1/g'
Ayesha, analytics, KarachiCSV exports साफ: header आणि CR काढाsed '1d; s/\r$//' export.csv
Liam, SRE, Dublinमोठ्या log मधून 5 मिनिटांचा भागsed -n '/^10:00/,/^10:05/p' app.log
Neha, Docker builds, BengaluruDockerfile RUN step मधे apt mirrors बदलsed -i 's#http://archive#http://in.archive#g' /etc/apt/sources.list

9. नेहमीच्या errors आणि त्यांचे fixes

हे का लागतं?

हे errors सगळ्यांना येतात. कारण माहीत असलं की तास वाचतात.

हे काय आहे?

आधी नेमका message वाचा. मग खालच्या row शी जुळवा.

कसं करायचं (step by step)

दिसणारा errorका होतंFix कसा करायचा
sed: -e expression #1, char 9: unterminated `s' command/ चुकला किंवा separator text मधे आहेSeparators मोजा किंवा # सारखा दुसरा वापरा.
sed 's#/a/b#/c/d#' f
sed: -e expression #1, char 5: unknown option to `s'Path मधला / command लवकर संपवतोSeparator म्हणून # किंवा |.
sed 's|/var/www|/srv|' f
sed: can't read file.txt: No such file or directoryचुकीचं file नाव किंवा pathls ने तपासा.
ls -l file.txt
sed: couldn't open temporary file ./sedXyz: Permission denied-i ला folder वर write permissionsudo वापरा किंवा लिहिता येईल तिथे edit.
sudo sed -i 's/a/b/' /etc/app.conf
sed: 1: "file": invalid command code f (macOS)BSD sed -i ला suffix argumentmacOS वर -i '' किंवा gnu-sed.
sed -i '' 's/a/b/' file
Variable not replaced: shows $V literallySingle quotes मुळे $V expand होत नाहीExpression ला double quotes.
sed "s/x/$V/" f
Replacement broke because the value has / or &Replacement मधे / आणि & specialEscape करा किंवा दुसरा separator.
sed "s|x|${V//&/\\&}|" f
sed: invalid reference \1 on `s' command's RHS( ) group शिवाय \1 (किंवा -E विसरला)( ) सह -E किंवा basic मधे \( \).
sed -E 's/(a)b/\1/' f
Symlinked config replaced by a plain file after -i-i link ऐवजी नवी file लिहितो--follow-symlinks वापरा.
sed -i --follow-symlinks 's/a/b/' link.conf
sed changed nothingPattern जुळत नाही (case, spaces, \r)आधी grep ने test, cat -A तपासा.
grep -n 'Port' f | cat -A

10. Troubleshooting step by step

हे का लागतं?

sed edit अपेक्षेप्रमाणे काम करत नसेल तर -i शिवाय छोट्या steps मधे test करा.

हे काय आहे?

वरून खाली जा. ज्या step ला problem दिसतो तिथे थांबा.

कसं करायचं (step by step)

  1. Line आहे का आणि hidden characters.
grep -n '^Port' /etc/ssh/sshd_config | cat -A
  1. -i शिवाय चालवा आणि diff.
sed 's/^Port 22/Port 2222/' /etc/ssh/sshd_config | diff /etc/ssh/sshd_config -
  1. कोणता sed आहे.
sed --version | head -1
  1. Quotes तपासा: final expression print.
echo "s/^version=.*/version=$V/"
  1. -i नंतर file आणि owner.
ls -l /etc/ssh/sshd_config*
  1. Reload आधी service config validate.
sudo sshd -t; sudo nginx -t

11. Lab 1: पाहुण्यांची list साफ करा

हे का लागतं?

Safe file वर replace, delete, ranges print आणि backups.

हे काय आहे?

पूर्ण hands-on lab. प्रत्येक step test Linux machine वर करा (EC2 instance, VM किंवा WSL).

कसं करायचं (step by step)

  1. List बनवा.
mkdir -p ~/lab10 && cd ~/lab10 && for i in $(seq 1 100); do echo "$i,Guest$i,Poona$([ $((i%10)) -eq 0 ] && echo ',cancelled')"; done > guests.txt; head -2 guests.txt

Output:

1,Guest1,Poona
2,Guest2,Poona
  1. शहर सुधारा (dry run).
sed 's/Poona/Pune/g' guests.txt | head -2

Output:

1,Guest1,Pune
2,Guest2,Pune
  1. Backup सह लावा.
sed -i.bak 's/Poona/Pune/g' guests.txt && ls guests*

Output:

guests.txt  guests.txt.bak
  1. Cancelled पाहुणे delete.
sed -i '/cancelled/d' guests.txt && wc -l < guests.txt

Output:

90
  1. पाहुणे 50 ते 52.
sed -n '50,52p' guests.txt

Output:

55,Guest55,Pune
56,Guest56,Pune
57,Guest57,Pune
  1. वर title line.
sed -i '1i id,name,city' guests.txt && head -1 guests.txt

Output:

id,name,city

12. Lab 2: Safe, repeatable config edits

हे का लागतं?

Section नुसार ini file edit, edit idempotent करा आणि rollback.

हे काय आहे?

पूर्ण hands-on lab. प्रत्येक step test Linux machine वर करा (EC2 instance, VM किंवा WSL).

कसं करायचं (step by step)

  1. ini file बनवा.
cd ~/lab10 && printf '[web]\nhost=0.0.0.0\nport=80\n[db]\nhost=localhost\nport=3306\n' > app.ini

Output:

(no output)
  1. फक्त db host बदला.
sed -i.orig '/^\[db\]/,/^\[/s/^host=.*/host=10.0.0.9/' app.ini && cat app.ini

Output:

[web]
host=0.0.0.0
port=80
[db]
host=10.0.0.9
port=3306
  1. परत चालवा: काही बदलत नाही.
sed '/^\[db\]/,/^\[/s/^host=.*/host=10.0.0.9/' app.ini | diff app.ini - && echo idempotent

Output:

idempotent
  1. [db] खाली setting append.
sed -i '/^\[db\]/a pool=20' app.ini && sed -n '/\[db\]/,$p' app.ini

Output:

[db]
pool=20
host=10.0.0.9
port=3306
  1. Rollback.
mv app.ini.orig app.ini && grep host app.ini

Output:

host=0.0.0.0
host=localhost

Ravindra Bagale's Tip

Never run sed -i on a production config without first running the same command without -i (or piping it into diff), and always keep a backup with -i.bak. Then validate (nginx -t, sshd -t) before you reload.

13. नेहमी विचारले जाणारे प्रश्न

प्र. sed माझी file बदलतो का?

फक्त -i सह. नाहीतर result print करतो आणि file तशीच राहते.

प्र. शेवटचा g म्हणजे?

Global: line वरचा प्रत्येक match, फक्त पहिला नाही.

प्र. / ऐवजी # का?

Text मधे slashes (paths, URLs) असतील तर दुसरा separator escaping टाळतो.

प्र. sed की awk?

Line edits आणि replace साठी sed. Columns, maths, reports साठी awk.

प्र. sed JSON किंवा YAML edit करू शकतो का?

साध्या lines साठी हो, पण risky. Structured data साठी jq किंवा yq.

प्र. macOS वर sed -i का fail होतो?

BSD sed ला backup suffix लागतो: sed -i '' 's/a/b/' file.

प्र. एक line, म्हणजे line 42 कशी print?

sed -n '42p' file.

प्र. शेवटची line कशी delete?

sed '$d' file.

14. मुलाखत प्रश्न आणि उत्तरं

Beginner level

प्र. File मधे सगळे 'foo' चं 'bar' करून save कसं?

sed -i 's/foo/bar/g' file (backup साठी .bak).

प्र. Lines 10 ते 20 कशा print?

sed -n '10,20p' file.

प्र. Blank lines कशा delete?

sed '/^$/d' file.

प्र. sed मधे -n काय करतो?

Automatic printing थांबवतो, फक्त p print करतो.

Mid level level

प्र. फक्त 'prod' असलेल्या lines वर replace.

sed '/prod/s/a/b/g' file.

प्र. Match नंतर line जोडा.

sed '/^\[mysqld\]/a max_connections=500' my.cnf.

प्र. Groups ने दोन words swap.

sed -E 's/(\w+) (\w+)/\2 \1/'.

प्र. sed मधे shell variable कसं वापराल?

Double quotes: sed "s/x/$V/"; value मधले / आणि & सांभाळा.

Senior level

प्र. sed -i खरंच in-place का नाही आणि त्याने काय फरक पडतो?

तो temp file लिहून rename करतो: नवा inode, ownership/SELinux context reset होऊ शकतो, hard links तुटतात आणि symlinks replace होतात (--follow-symlinks शिवाय). Open file handles जुनीच file बघतात.

प्र. Automation मधे sed config change idempotent कसा?

पूर्ण current line (^key=.*) match करून replace, नसेल तरच जोडा (grep -q || echo >>), किंवा Ansible lineinfile/blockinfile.

प्र. 20 GB log मधून time window पटकन.

sed -n '/^10:00/,/^10:05/{p;/^10:05/q}' शेवटी थांबतो; किंवा time compare सह awk; LC_ALL=C मदत करतो.

प्र. / आणि & असू शकणारी value safely insert.

आधी escape: esc=$(printf '%s' "$V" | sed 's/[&/\]/\\&/g'); मग sed "s/x/$esc/". किंवा दुसरं tool (envsubst, templates).

घरी करून बघा

  1. Shopping list च्या 10 lines लिहा. sed ने 'kg' चं 'KG', 'chips' असलेल्या lines delete, आणि फक्त lines 3 ते 6 print करा.
  2. /etc/hosts home folder मधे copy करा, copy वर sed -i.bak practise करा, मग diff ने compare.

सराव Tasks

या scenario बद्दल

Amravati Agro Market हा अमरावती मधला शेती व्यवसाय आहे. Anjali Thakre त्यांचं IT व cloud काम पाहतात. त्यांचे पैसे INR मध्ये मोजले जातात आणि AWS resources ap-south-1 Region मध्ये चालतात. खालच्या tasks मध्ये तुम्ही या lesson मध्ये शिकलेलं वापरून त्यांची खरी कामं करता. सगळी नावं, account IDs, IP addresses व numbers सरावासाठी काल्पनिक आहेत.

0 / 16

सोपं पहिला match replace

का: Output मधला typo fix.

काय करायचं: notes.txt print करा, प्रत्येक line वरचा पहिला 'colour' 'color' ने बदलून. Quotes मधे s/colour/color/.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं सगळे matches replace

का: प्रत्येक http https.

काय करायचं: links.txt print करा, प्रत्येक line वरचा प्रत्येक http: https: ने.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं एक line print

का: फक्त line 5.

काय करायचं: sed ने data.txt ची फक्त line 5.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Blank lines delete

का: Output साफ.

काय करायचं: sed आणि pattern ^$ ने रिकाम्या lines शिवाय list.txt print.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Header काढा

का: CSV header बेरीज बिघडवतो.

काय करायचं: sed ने पहिल्या line शिवाय leads.csv.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

सोपं Global flag

का: Line वरचा प्रत्येक match.

काय करायचं: s/a/b/ च्या शेवटी कोणतं एक letter line वरचे सगळे matches बदलतं?

कसं करायचं:
  1. Task मधले numbers लिहून घ्या.
  2. कागदावर step by step काढा.
  3. Box मध्ये फक्त final उत्तर लिहा.
  4. Check answer दाबा.

मध्यम File in place edit

का: खऱ्या file मधे port बदला.

काय करायचं: app.conf मधेच प्रत्येक 8080 ला 9090.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Backup सह in place

का: .bak ने undo सोपं.

काय करायचं: log.conf मधे प्रत्येक DEBUG INFO ने, log.conf.bak backup ठेवून.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Line range print

का: मोठ्या file चा भाग.

काय करायचं: sed ने app.log च्या lines 10 ते 20.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Comment lines delete

का: फक्त active config.

काय करायचं: # ने सुरू होणाऱ्या lines शिवाय my.cnf print.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम 3 lines नंतर थांबा

का: मोठ्या files वर fast.

काय करायचं: sed ने big.log च्या पहिल्या 3 lines आणि quit.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

मध्यम Paths साठी वेगळा delimiter

का: Paths मधले slashes s/// शी भिडतात.

काय करायचं: site.conf मधे /var/www च्या जागी /srv/www, result print. Delimiter | वापरा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

अवघड Match नंतर line

का: Section खाली setting.

काय करायचं: php.ini मधे (in place) ^\[PHP\] जुळणाऱ्या line नंतर max_execution_time = 60 line जोडा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

अवघड Groups ने swap

का: "Last, First" चं "First Last".

काय करायचं: -E वापरून names.txt मधे 'Patil, Asha' चं 'Asha Patil'. Pattern: s/([^,]+), (.+)/\2 \1/.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

अवघड एका run मधे दोन edits

का: एक pass fast आणि safe.

काय करायचं: दोन -e options सह एका sed मधे app.env print, dev च्या जागी prod आणि मग 8080 च्या जागी 80 (प्रत्येकी पहिला match).

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

अवघड Matches file मधे

का: Errors वेगळे.

काय करायचं: sed -n ने api.log मधल्या TIMEOUT lines timeouts.txt मधे लिहा.

कसं करायचं:
  1. हे काम करणारा Linux command शोधा.
  2. Task ला लागणारे options (उदा. -r, -h) जोडा.
  3. File नावं, folders किंवा users योग्य क्रमाने लिहा.
  4. System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.

थोडक्यात सांगायचं तर

  1. s/old/new/g replace; कोणताही separator.
  2. -i edit; -i.bak backup; आधी dry-run.
  3. Addresses: N, $, /re/, N,M, /a/,/b/, !.
  4. d p i a c q = w line commands.
  5. Reorder साठी ( ) आणि \1 सह -E.
  6. Edits idempotent ठेवा आणि configs validate.

उजळणी, तुलना आणि मुलाखत cards

हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.

sed find आणि replace. Files न उघडता text edit. s/old/new/g सगळे बदलतो. -i in place; .bak जोडा. Port safely बदला.
उजळणी card: sed find आणि replace · PNG download करा · Card page उघडा
sed line commands. Lines निवडा, काढा, जोडा. Np print, d delete, a/i add. p सोबत -n. Comments आणि blanks काढा.
उजळणी card: sed line commands · PNG download करा · Card page उघडा
sed p vs sed d. जुळणाऱ्या lines print. / जुळणाऱ्या lines delete.
तुलना: sed p vs sed d · PNG download करा · Card page उघडा
sed vs sed -i. Screen वर print. / File बदलतो.
तुलना: sed vs sed -i · PNG download करा · Card page उघडा
prod मधे sed -i safe?. File overwrite करतो. -i शिवाय test, .bak ठेवा. Backup सह edit.
मुलाखत card: prod मधे sed -i safe? · PNG download करा · Card page उघडा
Slashes असलेले paths replace?. / s/// शी भिडतो. दुसरा delimiter. Web root बदला.
मुलाखत card: Slashes असलेले paths replace? · PNG download करा · Card page उघडा
macOS वर sed -i fail?. BSD sed ला suffix लागतो. रिकामा suffix द्या. macOS form.
मुलाखत card: macOS वर sed -i fail? · PNG download करा · Card page उघडा
sed edits पुन्हा चालवता येतील असे?. दोनदा चालून edit दुप्पट. पूर्ण जुनी value जुळवा. Value नेमकी set.
मुलाखत card: sed edits पुन्हा चालवता येतील असे? · PNG download करा · Card page उघडा

अजून cards: Ravi Sir's Cards.