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)
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)
- प्रत्येक line वर पहिला match.
echo 'Poona to Poona' | sed 's/Poona/Pune/'
Output:
Pune to Poona
याचा अर्थ: फक्त पहिला बदलला.
- सगळे.
echo 'Poona to Poona' | sed 's/Poona/Pune/g'
Output:
Pune to Pune
याचा अर्थ: g = global.
- दुसऱ्या separator ने path बदला.
echo 'root /var/www/old;' | sed 's#/var/www/old#/srv/shop#'
Output:
root /srv/shop;
याचा अर्थ: प्रत्येक / escape नको.
- Shell variable वापरा.
V=2.4.1; sed "s/^version=.*/version=$V/" app.ini
Output:
name=shop
version=2.4.1
याचा अर्थ: Double quotes मुळे $V expand.
- & ने match wrap.
echo 'order 8812 and 8813' | sed -E 's/[0-9]+/#&/g'
Output:
order #8812 and #8813
याचा अर्थ: & जुळलेला number परत ठेवतो.
- फक्त बदललेल्या 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.
- शेवटचे 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)
- आधी dry run.
sed 's/^Port 22$/Port 2222/' /etc/ssh/sshd_config | diff /etc/ssh/sshd_config -
Output:
17c17
< Port 22
---
> Port 2222
याचा अर्थ: नेमकं काय बदलेल ते दाखवतो.
- 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.
- Restart आधी validate.
sudo sshd -t && sudo systemctl reload sshd
Output:
(no output)
याचा अर्थ: Config test केल्याशिवाय SSH restart नको.
- अनेक 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.
- 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 | निवडतो |
|---|---|
| 5 | Line 5 |
| $ | शेवटची line |
| 2,8 | Lines 2 ते 8 |
| /ERROR/ | ERROR असलेल्या lines |
| /start/,/end/ | start पासून end match पर्यंत |
| 1~2 | विषम lines |
| /^#/! | # ने सुरू न होणाऱ्या |
कसं करायचं (step by step)
- Lines 20 ते 25 print.
sed -n '20,25p' app.log
Output:
(6 lines)
याचा अर्थ: -n आणि p फक्त range print.
- शेवटची line.
sed -n '$p' app.log
Output:
10:59:59 INFO shutdown
याचा अर्थ: $ म्हणजे शेवटची line.
- फक्त 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 ला हात नाही.
- दोन वेळांमधले 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 उत्तम.
- Comments सोडून प्रत्येक line वर replace.
sed '/^#/!s/8080/9090/' app.conf
Output:
# default 8080
port=9090
याचा अर्थ: ! address उलटा करतो.
- दर दुसरी 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)
- 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.
- पहिली line (header) delete.
sed '1d' sales.csv | head -2
Output:
2026-10-01,Pune,4500
2026-10-01,Nashik,3200
याचा अर्थ: tail -n +2 सारखं.
- 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.
- Match नंतर setting append.
sed '/^\[mysqld\]/a max_connections=500' my.cnf
Output:
[mysqld]
max_connections=500
datadir=/var/lib/mysql
याचा अर्थ: a जुळलेल्या line नंतर.
- पूर्ण line बदला.
sed '/^SELINUX=/c SELINUX=permissive' /etc/selinux/config | grep ^SELINUX=
Output:
SELINUX=permissive
याचा अर्थ: c पूर्ण line बदलतो, जे असेल ते.
- मोठ्या file वर लवकर थांबा.
sed '10q' huge.log | wc -l
Output:
10
याचा अर्थ: q line 10 नंतर थांबतो. head सारखं, sed मधे.
- जुळणाऱ्या 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)
- First आणि last name swap.
echo 'Bagale Ravindra' | sed -E 's/(\w+) (\w+)/\2 \1/'
Output:
Ravindra Bagale
याचा अर्थ: \1 पहिला group, \2 दुसरा.
- 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, नव्या क्रमाने.
- 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 ठेवतो.
- 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).
- 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)
- एका run मधे दोन edits.
sed -e 's/dev/prod/' -e '/debug/d' app.conf
Output:
env=prod
port=8080
याचा अर्थ: -e परत परत.
- एका 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] मधे.
- 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 गेल्या आणि शहर सुधारलं.
- 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 चालतं.
- प्रत्येक 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, Pune | Backups सह 400 servers वर SSH harden | sed -i.bak 's/^#\?PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config |
| Elena, CI team, Warsaw | Release वेळी files मधे version bump | sed -i "s/^version=.*/version=$TAG/" gradle.properties |
| Tunde, fintech, Lagos | Logs पाठवण्याआधी card numbers mask | sed -E 's/[0-9]{12}([0-9]{4})/XXXX\1/g' |
| Ayesha, analytics, Karachi | CSV 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, Bengaluru | Dockerfile 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 नाव किंवा path | ls ने तपासा.ls -l file.txt |
sed: couldn't open temporary file ./sedXyz: Permission denied | -i ला folder वर write permission | sudo वापरा किंवा लिहिता येईल तिथे edit.sudo sed -i 's/a/b/' /etc/app.conf |
sed: 1: "file": invalid command code f (macOS) | BSD sed -i ला suffix argument | macOS वर -i '' किंवा gnu-sed.sed -i '' 's/a/b/' file |
Variable not replaced: shows $V literally | Single quotes मुळे $V expand होत नाही | Expression ला double quotes.sed "s/x/$V/" f |
Replacement broke because the value has / or & | Replacement मधे / आणि & special | Escape करा किंवा दुसरा 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 nothing | Pattern जुळत नाही (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)
- Line आहे का आणि hidden characters.
grep -n '^Port' /etc/ssh/sshd_config | cat -A
- -i शिवाय चालवा आणि diff.
sed 's/^Port 22/Port 2222/' /etc/ssh/sshd_config | diff /etc/ssh/sshd_config -
- कोणता sed आहे.
sed --version | head -1
- Quotes तपासा: final expression print.
echo "s/^version=.*/version=$V/"
- -i नंतर file आणि owner.
ls -l /etc/ssh/sshd_config*
- 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)
- 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
- शहर सुधारा (dry run).
sed 's/Poona/Pune/g' guests.txt | head -2
Output:
1,Guest1,Pune
2,Guest2,Pune
- Backup सह लावा.
sed -i.bak 's/Poona/Pune/g' guests.txt && ls guests*
Output:
guests.txt guests.txt.bak
- Cancelled पाहुणे delete.
sed -i '/cancelled/d' guests.txt && wc -l < guests.txt
Output:
90
- पाहुणे 50 ते 52.
sed -n '50,52p' guests.txt
Output:
55,Guest55,Pune
56,Guest56,Pune
57,Guest57,Pune
- वर 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)
- 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)
- फक्त 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
- परत चालवा: काही बदलत नाही.
sed '/^\[db\]/,/^\[/s/^host=.*/host=10.0.0.9/' app.ini | diff app.ini - && echo idempotent
Output:
idempotent
- [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
- 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.
Ravindra Bagale's Tip – मराठी
Production config वर sed -i चालवायच्या आधी तोच command -i शिवाय (किंवा diff मधे pipe करून) चालवा, आणि नेहमी -i.bak ने backup ठेवा. मग reload आधी validate (nginx -t, sshd -t).
Ravindra Bagale's Tip – हिंदी
Production config पर sed -i चलाने से पहले वही command बिना -i के (या diff में pipe करके) चलाएं, और हमेशा -i.bak से backup रखें. फिर reload से पहले validate (nginx -t, sshd -t) करें.
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).
घरी करून बघा
- Shopping list च्या 10 lines लिहा. sed ने 'kg' चं 'KG', 'chips' असलेल्या lines delete, आणि फक्त lines 3 ते 6 print करा.
- /etc/hosts home folder मधे copy करा, copy वर sed -i.bak practise करा, मग diff ने compare.
सराव Tasks
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/.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं सगळे matches replace
का: प्रत्येक http https.
काय करायचं: links.txt print करा, प्रत्येक line वरचा प्रत्येक http: https: ने.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं एक line print
का: फक्त line 5.
काय करायचं: sed ने data.txt ची फक्त line 5.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Blank lines delete
का: Output साफ.
काय करायचं: sed आणि pattern ^$ ने रिकाम्या lines शिवाय list.txt print.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Header काढा
का: CSV header बेरीज बिघडवतो.
काय करायचं: sed ने पहिल्या line शिवाय leads.csv.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
सोपं Global flag
का: Line वरचा प्रत्येक match.
काय करायचं: s/a/b/ च्या शेवटी कोणतं एक letter line वरचे सगळे matches बदलतं?
- Task मधले numbers लिहून घ्या.
- कागदावर step by step काढा.
- Box मध्ये फक्त final उत्तर लिहा.
- Check answer दाबा.
मध्यम File in place edit
का: खऱ्या file मधे port बदला.
काय करायचं: app.conf मधेच प्रत्येक 8080 ला 9090.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Backup सह in place
का: .bak ने undo सोपं.
काय करायचं: log.conf मधे प्रत्येक DEBUG INFO ने, log.conf.bak backup ठेवून.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Line range print
का: मोठ्या file चा भाग.
काय करायचं: sed ने app.log च्या lines 10 ते 20.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Comment lines delete
का: फक्त active config.
काय करायचं: # ने सुरू होणाऱ्या lines शिवाय my.cnf print.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम 3 lines नंतर थांबा
का: मोठ्या files वर fast.
काय करायचं: sed ने big.log च्या पहिल्या 3 lines आणि quit.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
मध्यम Paths साठी वेगळा delimiter
का: Paths मधले slashes s/// शी भिडतात.
काय करायचं: site.conf मधे /var/www च्या जागी /srv/www, result print. Delimiter | वापरा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
अवघड Match नंतर line
का: Section खाली setting.
काय करायचं: php.ini मधे (in place) ^\[PHP\] जुळणाऱ्या line नंतर max_execution_time = 60 line जोडा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
अवघड Groups ने swap
का: "Last, First" चं "First Last".
काय करायचं: -E वापरून names.txt मधे 'Patil, Asha' चं 'Asha Patil'. Pattern: s/([^,]+), (.+)/\2 \1/.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
अवघड एका run मधे दोन edits
का: एक pass fast आणि safe.
काय करायचं: दोन -e options सह एका sed मधे app.env print, dev च्या जागी prod आणि मग 8080 च्या जागी 80 (प्रत्येकी पहिला match).
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
अवघड Matches file मधे
का: Errors वेगळे.
काय करायचं: sed -n ने api.log मधल्या TIMEOUT lines timeouts.txt मधे लिहा.
- हे काम करणारा Linux command शोधा.
- Task ला लागणारे options (उदा. -r, -h) जोडा.
- File नावं, folders किंवा users योग्य क्रमाने लिहा.
- System files/users बदलत असाल तर sudo वापरा. Check answer दाबा.
15. संबंधित chapters
- DevOps साठी Linux Ops Refresh
- Automation साठी Bash Scripting
- Linux grep आणि find Commands Examples सह
- Linux Servers मध्ये Passwordless SSH
थोडक्यात सांगायचं तर
- s/old/new/g replace; कोणताही separator.
- -i edit; -i.bak backup; आधी dry-run.
- Addresses: N, $, /re/, N,M, /a/,/b/, !.
- d p i a c q = w line commands.
- Reorder साठी ( ) आणि \1 सह -E.
- Edits idempotent ठेवा आणि configs validate.
उजळणी, तुलना आणि मुलाखत cards
हा lesson काही मिनिटांत revise करा. Cards phone वर save करा किंवा PNG download करा. प्रत्येक card वरचा QR हा lesson उघडतो.








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