{"id":34739,"date":"2025-11-21T11:40:50","date_gmt":"2025-11-21T08:40:50","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=34739"},"modified":"2025-11-21T11:40:50","modified_gmt":"2025-11-21T08:40:50","slug":"intermediate-sed-linux-ortaminda-metin-akislarini-manipule-etmek","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/intermediate-sed-linux-ortaminda-metin-akislarini-manipule-etmek\/","title":{"rendered":"Intermediate Sed: Linux Ortam\u0131nda Metin Ak\u0131\u015flar\u0131n\u0131 Manip\u00fcle Etmek"},"content":{"rendered":"<p><body><\/p>\n<h2>Intermediate Sed: Linux Ortam\u0131nda Metin Ak\u0131\u015flar\u0131n\u0131 Manip\u00fcle Etmek<\/h2>\n<h3>Giri\u015f<\/h3>\n<p>Linux ve UNIX benzeri sistemlerde metin i\u015fleme, g\u00fcnl\u00fck sistem y\u00f6netimi g\u00f6revlerinden karma\u015f\u0131k veri analizine kadar pek \u00e7ok alanda temel bir ihtiya\u00e7t\u0131r. Bu ba\u011flamda, <code>sed<\/code> (Stream Editor) komutu, metin ak\u0131\u015flar\u0131n\u0131 sat\u0131r sat\u0131r i\u015fleyerek d\u00f6n\u00fc\u015ft\u00fcrme, filtreleme ve d\u00fczenleme yetene\u011fiyle \u00f6ne \u00e7\u0131kan g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. \u00c7o\u011fu kullan\u0131c\u0131 <code>sed<\/code>&#8216;in temel ikame (<code>s<\/code>) ve silme (<code>d<\/code>) komutlar\u0131n\u0131 bilse de, bu makale <code>sed<\/code>&#8216;in daha derinlemesine \u00f6zelliklerini, ak\u0131\u015f kontrol mekanizmalar\u0131n\u0131, geli\u015fmi\u015f adresleme y\u00f6ntemlerini ve karma\u015f\u0131k metin manip\u00fclasyonlar\u0131 i\u00e7in nas\u0131l kullan\u0131labilece\u011fini ke\u015ffedecektir. Amac\u0131m\u0131z, <code>sed<\/code>&#8216;i yaln\u0131zca basit bir arama-de\u011fi\u015ftirme arac\u0131 olmaktan \u00e7\u0131kar\u0131p, ger\u00e7ek bir programlama dili gibi kullanabilen, metin ak\u0131\u015flar\u0131 \u00fczerinde tam kontrol sahibi bir kullan\u0131c\u0131 profili olu\u015fturmakt\u0131r.<\/p>\n<p>Bu makalede, <code>sed<\/code>&#8216;in temel prensiplerini k\u0131sa bir hat\u0131rlatma ile ge\u00e7tikten sonra, geli\u015fmi\u015f adresleme tekniklerine, <code>s<\/code> komutunun derinlemesine kullan\u0131m\u0131na, <code>sed<\/code>&#8216;in dahili ak\u0131\u015f kontrol mekanizmalar\u0131na (hold space, pattern space, dallanma komutlar\u0131), \u00e7oklu komut dosyalar\u0131 olu\u015fturmaya ve pratik senaryolarda <code>sed<\/code>&#8216;in nas\u0131l kullan\u0131labilece\u011fine odaklanaca\u011f\u0131z. Ayr\u0131ca, <code>sed<\/code>&#8216;i di\u011fer Linux ara\u00e7lar\u0131yla birle\u015ftirerek daha g\u00fc\u00e7l\u00fc \u00e7\u00f6z\u00fcmler \u00fcretme yollar\u0131na ve yayg\u0131n hatalardan ka\u00e7\u0131nma ipu\u00e7lar\u0131na da de\u011finece\u011fiz. Bu yolculu\u011fun sonunda, <code>sed<\/code>&#8216;in ger\u00e7ek g\u00fcc\u00fcn\u00fc ke\u015ffetmi\u015f ve metin i\u015fleme becerilerinizi bir \u00fcst seviyeye ta\u015f\u0131m\u0131\u015f olacaks\u0131n\u0131z.<\/p>\n<h3>Sed&#8217;in Temellerini Hat\u0131rlayal\u0131m<\/h3>\n<p><code>sed<\/code>, bir giri\u015f ak\u0131\u015f\u0131ndan (dosya veya boru hatt\u0131) okunan metin sat\u0131rlar\u0131 \u00fczerinde belirtilen i\u015flemleri ger\u00e7ekle\u015ftiren do\u011frusal bir metin d\u00fczenleyicidir. Her sat\u0131r\u0131 okur, \u00fczerinde komutlar\u0131 uygular ve varsay\u0131lan olarak standart \u00e7\u0131kt\u0131ya yazar. Temel s\u00f6zdizimi \u015f\u00f6yledir: <code>sed [SE\u00c7ENEKLER] 'KOMUT' [DOSYA...]<\/code>.<\/p>\n<p>En yayg\u0131n kullan\u0131lan komutlar:<br \/>\n*   <code>s\/eski\/yeni\/<\/code>: <code>eski<\/code> deseniyle e\u015fle\u015fen ilk ifadeyi <code>yeni<\/code> ile de\u011fi\u015ftirir.<br \/>\n*   <code>d<\/code>: E\u015fle\u015fen sat\u0131rlar\u0131 siler.<br \/>\n*   <code>p<\/code>: E\u015fle\u015fen sat\u0131rlar\u0131 yazd\u0131r\u0131r. Genellikle <code>-n<\/code> se\u00e7ene\u011fiyle birlikte kullan\u0131l\u0131r, bu da <code>sed<\/code>&#8216;in varsay\u0131lan \u00e7\u0131kt\u0131s\u0131n\u0131 bast\u0131r\u0131r ve yaln\u0131zca <code>p<\/code> komutuyla belirtilen sat\u0131rlar\u0131 yazd\u0131r\u0131r.<\/p>\n<p>Adresleme, <code>sed<\/code>&#8216;in hangi sat\u0131rlar \u00fczerinde i\u015flem yapaca\u011f\u0131n\u0131 belirler. Bu, bir sat\u0131r numaras\u0131 (<code>sed '5d' dosya.txt<\/code>), bir adres aral\u0131\u011f\u0131 (<code>sed '5,10d' dosya.txt<\/code>) veya bir d\u00fczenli ifade (<code>sed '\/hata\/d' log.txt<\/code>) olabilir.<\/p>\n<p>\u00d6rnek:<\/p>\n<pre><code class=\"language-bash\">echo \"Merhaba D\u00fcnya\" | sed 's\/D\u00fcnya\/Linux\/'\n<h2>\u00c7\u0131kt\u0131: Merhaba Linux<\/h2>\n\ncat dosya.txt\n<h2>Sat\u0131r 1<\/h2>\n<h2>Sat\u0131r 2<\/h2>\n<h2>Sat\u0131r 3<\/h2>\n<h2>Sat\u0131r 4<\/h2>\n<h2>Sat\u0131r 5<\/h2>\nsed '2,4d' dosya.txt\n<h2>\u00c7\u0131kt\u0131:<\/h2>\n<h2>Sat\u0131r 1<\/h2>\n<h2>Sat\u0131r 5<\/code><\/pre>\n<\/h2>\n<p>Bu temel bilgiler, <code>sed<\/code>&#8216;in nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 anlamak i\u00e7in bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. \u015eimdi, bu temellerin \u00fczerine daha geli\u015fmi\u015f yetenekler in\u015fa edelim.<\/p>\n<h3>Geli\u015fmi\u015f Adresleme ve Desen E\u015fle\u015ftirme<\/h3>\n<p><code>sed<\/code>&#8216;in g\u00fcc\u00fcn\u00fcn \u00f6nemli bir k\u0131sm\u0131, komutlar\u0131 belirli sat\u0131rlara veya desenlere g\u00f6re ko\u015fullu olarak uygulayabilme yetene\u011finden gelir.<\/p>\n<h4>Adres Aral\u0131\u011f\u0131 (Address Ranges)<\/h4>\n<p>Adres aral\u0131klar\u0131, <code>sed<\/code>&#8216;e bir ba\u015flang\u0131\u00e7 ve biti\u015f noktas\u0131 belirterek belirli bir sat\u0131r blo\u011fu \u00fczerinde i\u015flem yapmas\u0131n\u0131 s\u00f6yler. Bu aral\u0131klar sat\u0131r numaralar\u0131, d\u00fczenli ifadeler veya bunlar\u0131n bir kombinasyonu ile tan\u0131mlanabilir.<\/p>\n<p>*   <strong>Sat\u0131r Numaras\u0131 Aral\u0131klar\u0131:<\/strong> <code>start_line,end_line<\/code><\/p>\n<pre><code class=\"language-bash\">seq 10 | sed '3,7s\/.\/X\/' # 3'ten 7'ye kadar olan sat\u0131rlardaki her karakteri X ile de\u011fi\u015ftirir.\n    # \u00c7\u0131kt\u0131:\n    # 1\n    # 2\n    # X\n    # X\n    # X\n    # X\n    # X\n    # 8\n    # 9\n    # 10<\/code><\/pre>\n<p>*   <strong>D\u00fczenli \u0130fade Aral\u0131klar\u0131:<\/strong> <code>\/regex1\/,\/regex2\/<\/code><br \/>\n    <code>regex1<\/code> ile e\u015fle\u015fen ilk sat\u0131rdan ba\u015flayarak <code>regex2<\/code> ile e\u015fle\u015fen ilk sat\u0131ra kadar olan t\u00fcm sat\u0131rlar \u00fczerinde i\u015flem yapar.<\/p>\n<pre><code class=\"language-bash\">cat metin.txt\n    # Ba\u015flang\u0131\u00e7 metni\n    # Sat\u0131r A\n    # Sat\u0131r B\n    # Sonu\u00e7\n    # Sat\u0131r C\n    # Biti\u015f metni\n\n    sed '\/Ba\u015flang\u0131\u00e7\/,\/Sonu\u00e7\/d' metin.txt\n    # \u00c7\u0131kt\u0131:\n    # Sat\u0131r C\n    # Biti\u015f metni<\/code><\/pre>\n<p>    Bu komut, &#8220;Ba\u015flang\u0131\u00e7&#8221; i\u00e7eren sat\u0131rdan &#8220;Sonu\u00e7&#8221; i\u00e7eren sat\u0131ra kadar olan blo\u011fu siler.<\/p>\n<p>*   <strong>Karma Aral\u0131klar:<\/strong> <code>start_line,\/regex\/<\/code> veya <code>\/regex\/,end_line<\/code><\/p>\n<pre><code class=\"language-bash\">seq 10 | sed '5,\/8\/d' # 5. sat\u0131rdan ba\u015flay\u0131p 8 i\u00e7eren ilk sat\u0131ra kadar siler.\n    # \u00c7\u0131kt\u0131:\n    # 1\n    # 2\n    # 3\n    # 4\n    # 9\n    # 10<\/code><\/pre>\n<h4>Tersine Adresleme (Inverse Addressing)<\/h4>\n<p><code>!<\/code> operat\u00f6r\u00fc, belirtilen adres veya adres aral\u0131\u011f\u0131 d\u0131\u015f\u0131ndaki sat\u0131rlarda komutun uygulanmas\u0131n\u0131 sa\u011flar.<\/p>\n<pre><code class=\"language-bash\">seq 5 | sed '2,4!d' # 2'den 4'e kadar olan sat\u0131rlar d\u0131\u015f\u0131ndakileri siler.\n<h2>\u00c7\u0131kt\u0131:<\/h2>\n<h2>2<\/h2>\n<h2>3<\/h2>\n<h2>4<\/code><\/pre>\n<\/h2>\n<p>Bu \u00f6rnekte, sadece 2, 3 ve 4. sat\u0131rlar kal\u0131r.<\/p>\n<h4>Ad\u0131m Ad\u0131m Adresleme (Step-by-Step Addressing &#8211; GNU sed)<\/h4>\n<p>GNU <code>sed<\/code>&#8216;in bir uzant\u0131s\u0131 olan <code>first~step<\/code> s\u00f6zdizimi, belirli bir ba\u015flang\u0131\u00e7 sat\u0131r\u0131ndan itibaren her <code>step<\/code> sat\u0131rda bir i\u015flem yapmaya olanak tan\u0131r.<\/p>\n<pre><code class=\"language-bash\">seq 10 | sed '1~2p' -n # Her 2. sat\u0131r\u0131 yazd\u0131r\u0131r, 1. sat\u0131rdan ba\u015flayarak.\n<h2>\u00c7\u0131kt\u0131:<\/h2>\n<h2>1<\/h2>\n<h2>3<\/h2>\n<h2>5<\/h2>\n<h2>7<\/h2>\n<h2>9<\/code><\/pre>\n<\/h2>\n<p>Bu, \u00f6zellikle log dosyalar\u0131nda belirli aral\u0131klarla \u00f6zet bilgi \u00e7ekmek veya her N. kayd\u0131 i\u015flemek i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<h4>\u00c7oklu Komutlar ve Bloklar<\/h4>\n<p>Tek bir adres i\u00e7in birden fazla komut uygulamak istedi\u011finizde s\u00fcsl\u00fc parantezler <code>{}<\/code> kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-bash\">cat metin.txt\n<h2>Bu bir deneme metnidir.<\/h2>\n<h2>\u0130kinci sat\u0131r.<\/h2>\n<h2>\u00dc\u00e7\u00fcnc\u00fc sat\u0131r.<\/h2>\n\nsed '\/deneme\/{ s\/deneme\/TEST\/; p }' metin.txt\n<h2>\u00c7\u0131kt\u0131:<\/h2>\n<h2>Bu bir TEST metnidir.<\/h2>\n<h2>Bu bir TEST metnidir.<\/h2>\n<h2>\u0130kinci sat\u0131r.<\/h2>\n<h2>\u00dc\u00e7\u00fcnc\u00fc sat\u0131r.<\/code><\/pre>\n<\/h2>\n<p>Burada, &#8220;deneme&#8221; i\u00e7eren sat\u0131rda \u00f6nce ikame yap\u0131l\u0131r, sonra de\u011fi\u015ftirilmi\u015f sat\u0131r yazd\u0131r\u0131l\u0131r. <code>-n<\/code> olmad\u0131\u011f\u0131 i\u00e7in orijinal sat\u0131r da (de\u011fi\u015ftirilmi\u015f haliyle) varsay\u0131lan olarak yazd\u0131r\u0131l\u0131r, dolay\u0131s\u0131yla iki kez g\u00f6r\u00fcr\u00fcz. E\u011fer sadece de\u011fi\u015ftirilmi\u015f halini g\u00f6rmek istersek <code>-n<\/code> kullanmal\u0131yd\u0131k: <code>sed -n '\/deneme\/{ s\/deneme\/TEST\/; p }' metin.txt<\/code>.<\/p>\n<h3>Daha Derin \u0130kame \u0130\u015flemleri (Daha Derin <code>s<\/code> Komutu)<\/h3>\n<p><code>s<\/code> (substitute) komutu, <code>sed<\/code>&#8216;in en g\u00fc\u00e7l\u00fc ve en s\u0131k kullan\u0131lan \u00f6zelli\u011fidir. Temel kullan\u0131m\u0131 <code>s\/regex\/replacement\/<\/code> \u015feklindedir, ancak bir\u00e7ok bayrak ve \u00f6zel karakterle yetenekleri b\u00fcy\u00fck \u00f6l\u00e7\u00fcde geni\u015fletilebilir.<\/p>\n<h4>De\u011fi\u015ftirme Bayraklar\u0131 (Substitution Flags)<\/h4>\n<p>*   <code>g<\/code> (global): Sat\u0131rdaki t\u00fcm e\u015fle\u015fmeleri de\u011fi\u015ftirir. Varsay\u0131lan olarak sadece ilk e\u015fle\u015fme de\u011fi\u015ftirilir.<\/p>\n<pre><code class=\"language-bash\">echo \"elma armut elma muz\" | sed 's\/elma\/\u00e7ilek\/g'\n    # \u00c7\u0131kt\u0131: \u00e7ilek armut \u00e7ilek muz<\/code><\/pre>\n<p>*   <code>p<\/code> (print): Yaln\u0131zca ikame i\u015flemi ba\u015far\u0131l\u0131 olursa sat\u0131r\u0131 yazd\u0131r\u0131r. Genellikle <code>-n<\/code> ile kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-bash\">echo \"Merhaba D\u00fcnya\" | sed -n 's\/D\u00fcnya\/Evren\/p'\n    # \u00c7\u0131kt\u0131: Merhaba Evren<\/code><\/pre>\n<p>*   <code>w file<\/code> (write): \u0130kame i\u015flemi ba\u015far\u0131l\u0131 olursa sat\u0131r\u0131 belirtilen dosyaya yazar.<\/p>\n<pre><code class=\"language-bash\">echo \"Bu bir test sat\u0131r\u0131d\u0131r.\" | sed 's\/test\/deneme\/w output.txt'\n    # output.txt dosyas\u0131na \"Bu bir deneme sat\u0131r\u0131d\u0131r.\" yazar.<\/code><\/pre>\n<p>*   <code>i<\/code> veya <code>I<\/code> (case-insensitive &#8211; GNU sed): D\u00fczenli ifade e\u015fle\u015ftirmesini b\u00fcy\u00fck\/k\u00fc\u00e7\u00fck harf duyars\u0131z yapar.<\/p>\n<pre><code class=\"language-bash\">echo \"HELLO world\" | sed 's\/hello\/hi\/i'\n    # \u00c7\u0131kt\u0131: hi world<\/code><\/pre>\n<p>*   <code>N<\/code> (nth occurrence): Yaln\u0131zca N. e\u015fle\u015fmeyi de\u011fi\u015ftirir. <code>N<\/code> bir say\u0131d\u0131r.<\/p>\n<pre><code class=\"language-bash\">echo \"bir iki bir \u00fc\u00e7 bir\" | sed 's\/bir\/d\u00f6rt\/2' # \u0130kinci \"bir\"i de\u011fi\u015ftirir.\n    # \u00c7\u0131kt\u0131: bir iki d\u00f6rt \u00fc\u00e7 bir<\/code><\/pre>\n<h4>Ay\u0131r\u0131c\u0131 Karakteri De\u011fi\u015ftirme (Changing Delimiter)<\/h4>\n<p>D\u00fczenli ifadeniz <code>\/<\/code> karakteri i\u00e7eriyorsa, ay\u0131r\u0131c\u0131y\u0131 ba\u015fka bir karaktere (\u00f6rne\u011fin <code>|<\/code>, <code>:<\/code>, <code>#<\/code>) de\u011fi\u015ftirmek daha okunabilir bir komut yazman\u0131z\u0131 sa\u011flar.<\/p>\n<pre><code class=\"language-bash\">echo \"\/usr\/local\/bin\" | sed 's\/\\\/usr\\\/local\\\/bin\/\\\/opt\\\/bin\/g' # Zor okuma\necho \"\/usr\/local\/bin\" | sed 's#\/usr\/local\/bin#\/opt\/bin#g'      # Daha kolay okuma\n<h2>\u00c7\u0131kt\u0131: \/opt\/bin<\/code><\/pre>\n<\/h2>\n<h4>Yakalanan Gruplar ve Geri Referanslar (Captured Groups and Backreferences)<\/h4>\n<p>D\u00fczenli ifadelerdeki parantezler <code>()<\/code> ile yakalanan gruplar, de\u011fi\u015ftirme b\u00f6l\u00fcm\u00fcnde <code>\\1<\/code>, <code>\\2<\/code> gibi geri referanslarla kullan\u0131labilir.<\/p>\n<pre><code class=\"language-bash\">echo \"Ad: John Doe\" | sed 's\/Ad: \\(.*\\)\/Soyad: \\1\/'\n<h2>\u00c7\u0131kt\u0131: Soyad: John Doe<\/code><\/pre>\n<\/h2>\n<p>Bu \u00f6rnekte, <code>(.*)<\/code> ile &#8220;John Doe&#8221; yakalan\u0131r ve <code>\\1<\/code> ile de\u011fi\u015ftirme k\u0131sm\u0131nda kullan\u0131l\u0131r.<\/p>\n<p>Birden fazla grup yakalama:<\/p>\n<pre><code class=\"language-bash\">echo \"isim=Ay\u015fe soyisim=Y\u0131lmaz\" | sed 's\/isim=\\([^ ]<em>\\) soyisim=\\([^ ]<\/em>\\)\/Soyad: \\2, Ad: \\1\/'\n<h2>\u00c7\u0131kt\u0131: Soyad: Y\u0131lmaz, Ad: Ay\u015fe<\/code><\/pre>\n<\/h2>\n<p>Burada, <code>\\([^ ]*\\)<\/code> ifadesi bo\u015fluk karakteri d\u0131\u015f\u0131ndaki t\u00fcm karakterleri yakalar. <code>\\1<\/code> &#8220;Ay\u015fe&#8221;yi, <code>\\2<\/code> &#8220;Y\u0131lmaz&#8221;\u0131 temsil eder.<\/p>\n<h4>\u00d6zel Karakterler ve Ka\u00e7\u0131\u015f Dizileri<\/h4>\n<p>*   <code>&<\/code>: E\u015fle\u015fen desenin tamam\u0131n\u0131 temsil eder.<\/p>\n<pre><code class=\"language-bash\">echo \"Merhaba D\u00fcnya\" | sed 's\/D\u00fcnya\/Yeni &\/'\n    # \u00c7\u0131kt\u0131: Merhaba Yeni D\u00fcnya<\/code><\/pre>\n<p>*   <code>\\n<\/code>: De\u011fi\u015ftirme k\u0131sm\u0131nda yeni bir sat\u0131r ekler. (<code>sed 's\/regex\/\\nreplacement\/'<\/code>)<\/p>\n<pre><code class=\"language-bash\">echo \"Birinci sat\u0131r. \u0130kinci sat\u0131r.\" | sed 's\/\\. \/\\.\\n\/'\n    # \u00c7\u0131kt\u0131:\n    # Birinci sat\u0131r.\n    # \u0130kinci sat\u0131r.<\/code><\/pre>\n<p>*   <code>\\t<\/code>: Sekme karakteri ekler.<\/p>\n<h3>Sed&#8217;in Ak\u0131\u015f Kontrol\u00fc ve D\u00f6ng\u00fcleri<\/h3>\n<p><code>sed<\/code>, her sat\u0131r\u0131 i\u015flemek i\u00e7in dahili bir d\u00f6ng\u00fc kullan\u0131r. Bu d\u00f6ng\u00fc, &#8220;pattern space&#8221; (desen alan\u0131) ve &#8220;hold space&#8221; (bekletme alan\u0131) ad\u0131 verilen iki ge\u00e7ici bellek alan\u0131 ile y\u00f6netilir.<\/p>\n<p>*   <strong>Pattern Space (Desen Alan\u0131):<\/strong> <code>sed<\/code>&#8216;in mevcut sat\u0131r\u0131 \u00fczerinde \u00e7al\u0131\u015ft\u0131\u011f\u0131 ana \u00e7al\u0131\u015fma alan\u0131d\u0131r. Her d\u00f6ng\u00fcn\u00fcn ba\u015f\u0131nda, giri\u015ften bir sat\u0131r okunur ve desen alan\u0131na yerle\u015ftirilir. Komutlar bu alan \u00fczerinde uygulan\u0131r. D\u00f6ng\u00fcn\u00fcn sonunda, desen alan\u0131n\u0131n i\u00e7eri\u011fi varsay\u0131lan olarak standart \u00e7\u0131kt\u0131ya yaz\u0131l\u0131r.<br \/>\n*   <strong>Hold Space (Bekletme Alan\u0131):<\/strong> Ge\u00e7ici olarak veri depolamak i\u00e7in kullan\u0131lan ikincil bir aland\u0131r. Do\u011frudan komutlar taraf\u0131ndan i\u015flenmez; desen alan\u0131ndan veri kopyalamak veya desen alan\u0131na veri yap\u0131\u015ft\u0131rmak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<h4>Sonraki Sat\u0131rlar\u0131 Okuma (<code>N<\/code> komutu)<\/h4>\n<p><code>N<\/code> komutu, desen alan\u0131na bir sonraki giri\u015f sat\u0131r\u0131n\u0131 ekler ve aralar\u0131na bir yeni sat\u0131r karakteri koyar. Bu, birden fazla sat\u0131r\u0131 tek bir desen alan\u0131nda i\u015flemek i\u00e7in \u00e7ok kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<pre><code class=\"language-bash\">cat metin.txt\n<h2>Sat\u0131r 1<\/h2>\n<h2>Sat\u0131r 2<\/h2>\n<h2>Sat 3<\/h2>\n\nsed 'N; s\/\\n\/, \/' metin.txt\n<h2>\u00c7\u0131kt\u0131:<\/h2>\n<h2>Sat\u0131r 1, Sat\u0131r 2<\/h2>\n<h2>Sat 3<\/code><\/pre>\n<\/h2>\n<p>Bu \u00f6rnekte, <code>N<\/code> komutu ilk iki sat\u0131r\u0131 desen alan\u0131na al\u0131r (<code>Sat\u0131r 1\\nSat\u0131r 2<\/code>). Ard\u0131ndan <code>s<\/code> komutu yeni sat\u0131r karakterini virg\u00fcl ve bo\u015flukla de\u011fi\u015ftirir. \u00dc\u00e7\u00fcnc\u00fc sat\u0131r tek ba\u015f\u0131na kal\u0131r, \u00e7\u00fcnk\u00fc <code>N<\/code> komutu sadece bir sonraki sat\u0131r\u0131 ekler ve d\u00f6ng\u00fc bitti\u011finde \u00fc\u00e7\u00fcnc\u00fc sat\u0131r tek ba\u015f\u0131na i\u015flenir.<\/p>\n<h4>Yeni D\u00f6ng\u00fc Ba\u015flatma (<code>D<\/code>, <code>b<\/code>, <code>t<\/code> komutlar\u0131)<\/h4>\n<p>*   <code>D<\/code> (Delete up to newline and restart cycle): Desen alan\u0131n\u0131n ilk k\u0131sm\u0131n\u0131 (ilk yeni sat\u0131ra kadar olan b\u00f6l\u00fcm\u00fc) siler ve d\u00f6ng\u00fcy\u00fc yeniden ba\u015flat\u0131r. Kalan k\u0131s\u0131m \u00fczerinde yeni bir d\u00f6ng\u00fc ba\u015flat\u0131l\u0131r, yeni bir sat\u0131r okunmaz.<\/p>\n<pre><code class=\"language-bash\">cat metin.txt\n    # \u0130lk sat\u0131r\n    # \u0130kinci sat\u0131r\n    # \u00dc\u00e7\u00fcnc\u00fc sat\u0131r\n\n    sed 'N; \/\\n\u0130kinci\/D' metin.txt\n    # \u00c7\u0131kt\u0131:\n    # \u00dc\u00e7\u00fcnc\u00fc sat\u0131r<\/code><\/pre>\n<p>    Burada <code>N<\/code> ile &#8220;\u0130lk sat\u0131r\\n\u0130kinci sat\u0131r&#8221; desen alan\u0131na al\u0131n\u0131r. <code>\/\\n\u0130kinci\/<\/code> deseni e\u015fle\u015fti\u011fi i\u00e7in <code>D<\/code> komutu &#8220;\u0130lk sat\u0131r&#8221; ve <code>\\n<\/code>&#8216;i siler. Kalan &#8220;\u0130kinci sat\u0131r&#8221; ile yeni bir d\u00f6ng\u00fc ba\u015flar. Bu d\u00f6ng\u00fcde bir komut olmad\u0131\u011f\u0131 i\u00e7in &#8220;\u0130kinci sat\u0131r&#8221; varsay\u0131lan olarak yazd\u0131r\u0131l\u0131r. Bir sonraki ger\u00e7ek giri\u015f &#8220;\u00dc\u00e7\u00fcnc\u00fc sat\u0131r&#8221; oldu\u011fu i\u00e7in, o da yazd\u0131r\u0131l\u0131r. E\u011fer &#8220;\u0130kinci sat\u0131r&#8221;\u0131n da yazd\u0131r\u0131lmas\u0131n\u0131 istemiyorsak daha karma\u015f\u0131k bir mant\u0131k kurmam\u0131z gerekir.<\/p>\n<p>*   <code>b label<\/code> (branch): Ko\u015fulsuz olarak belirtilen etikete atlar. Etiket belirtilmezse, d\u00f6ng\u00fcn\u00fcn sonuna atlar ve yeni bir sat\u0131r okur.<br \/>\n*   <code>t label<\/code> (test and branch): Son <code>s<\/code> komutu ba\u015far\u0131l\u0131 olduysa belirtilen etikete atlar. Etiket belirtilmezse, d\u00f6ng\u00fcn\u00fcn sonuna atlar.<\/p>\n<p>Bu dallanma komutlar\u0131, <code>sed<\/code>&#8216;i Turing-complete&#8217;e yakla\u015ft\u0131ran d\u00f6ng\u00fcler ve ko\u015fullu mant\u0131k olu\u015fturmaya olanak tan\u0131r.<\/p>\n<p>\u00d6rnek (basit bir d\u00f6ng\u00fc):<\/p>\n<pre><code class=\"language-bash\"># \u0130lk bo\u015f sat\u0131rdan sonraki t\u00fcm bo\u015f sat\u0131rlar\u0131 silme\nsed '\/^$\/N; \/^\\n$\/D; P; D'<\/code><\/pre>\n<p>Bu komut biraz karma\u015f\u0131kt\u0131r.<br \/>\n1.  <code>^$<\/code>: Bo\u015f bir sat\u0131r bulur.<br \/>\n2.  <code>N<\/code>: Bir sonraki sat\u0131r\u0131 desen alan\u0131na ekler. E\u011fer iki bo\u015f sat\u0131r arka arkaya gelirse desen alan\u0131 <code>\\n<\/code> olur.<br \/>\n3.  <code>^\\n$<\/code>: Desen alan\u0131nda sadece bir yeni sat\u0131r karakteri varsa (yani iki bo\u015f sat\u0131r arka arkaya gelmi\u015fse) <code>D<\/code> komutu ilk yeni sat\u0131r\u0131 siler ve d\u00f6ng\u00fcy\u00fc yeniden ba\u015flat\u0131r. Bu, ikinci bo\u015f sat\u0131r\u0131 g\u00f6rmezden gelmemizi sa\u011flar.<br \/>\n4.  <code>P<\/code>: Desen alan\u0131n\u0131n ilk sat\u0131r\u0131n\u0131 yazd\u0131r\u0131r (ilk yeni sat\u0131ra kadar).<br \/>\n5.  <code>D<\/code>: Desen alan\u0131n\u0131n ilk sat\u0131r\u0131n\u0131 siler ve d\u00f6ng\u00fcy\u00fc yeniden ba\u015flat\u0131r. Bu, <code>P<\/code> ile yazd\u0131r\u0131lan k\u0131sm\u0131 siler ve kalan k\u0131s\u0131m \u00fczerinde devam eder, b\u00f6ylece <code>sed<\/code> her zaman desen alan\u0131n\u0131n ilk sat\u0131r\u0131n\u0131 i\u015fler ve di\u011fer sat\u0131rlar\u0131 da d\u00f6ng\u00fcye sokar.<\/p>\n<h4>Hold Space Kullan\u0131m\u0131<\/h4>\n<p>Bekletme alan\u0131 (<code>hold space<\/code>), desen alan\u0131ndaki veriyi ge\u00e7ici olarak saklamak veya desen alan\u0131na geri y\u00fcklemek i\u00e7in kullan\u0131l\u0131r.<br \/>\n*   <code>h<\/code>: Desen alan\u0131n\u0131n i\u00e7eri\u011fini bekletme alan\u0131na kopyalar (eski i\u00e7eri\u011fi siler).<br \/>\n*   <code>H<\/code>: Desen alan\u0131n\u0131n i\u00e7eri\u011fini bekletme alan\u0131na ekler (yeni sat\u0131r ile birlikte).<br \/>\n*   <code>g<\/code>: Bekletme alan\u0131n\u0131n i\u00e7eri\u011fini desen alan\u0131na kopyalar (eski i\u00e7eri\u011fi siler).<br \/>\n*   <code>G<\/code>: Bekletme alan\u0131n\u0131n i\u00e7eri\u011fini desen alan\u0131na ekler (yeni sat\u0131r ile birlikte).<br \/>\n*   <code>x<\/code>: Desen alan\u0131 ve bekletme alan\u0131n\u0131n i\u00e7eriklerini de\u011fi\u015ftirir.<\/p>\n<p>\u00d6rnek: Sat\u0131rlar\u0131 tersine \u00e7evirme (basit versiyon)<\/p>\n<pre><code class=\"language-bash\">sed -n '1!G; h; $p'\n<h2>A\u00e7\u0131klama:<\/h2>\n<h2>1!G: \u0130lk sat\u0131r de\u011filse, bekletme alan\u0131n\u0131n i\u00e7eri\u011fini desen alan\u0131na ekle.<\/h2>\n<h2>h: Desen alan\u0131n\u0131n i\u00e7eri\u011fini bekletme alan\u0131na kopyala.<\/h2>\n<h2>$p: Son sat\u0131ra geldi\u011finde desen alan\u0131n\u0131 yazd\u0131r.<\/code><\/pre>\n<\/h2>\n<p>Bu komut, her sat\u0131r\u0131 okur ve bir \u00f6nceki sat\u0131r\u0131n \u00fczerine y\u0131\u011far. \u0130lk sat\u0131r geldi\u011finde <code>h<\/code> ile bekletme alan\u0131na kopyalan\u0131r. \u0130kinci sat\u0131r geldi\u011finde <code>1!G<\/code> ile bekletme alan\u0131ndaki (ilk sat\u0131r) desen alan\u0131na eklenir (<code>ikinci sat\u0131r\\nilk sat\u0131r<\/code>). Sonra bu yeni i\u00e7erik (<code>h<\/code>) ile bekletme alan\u0131na kopyalan\u0131r. Bu b\u00f6yle devam eder. Son sat\u0131ra gelindi\u011finde, t\u00fcm sat\u0131rlar ters s\u0131rada desen alan\u0131nda birikmi\u015f olur ve <code>$p<\/code> ile yazd\u0131r\u0131l\u0131r.<\/p>\n<h3>Geli\u015fmi\u015f Dosya \u0130\u015flemleri<\/h3>\n<p><code>sed<\/code> sadece standart \u00e7\u0131kt\u0131ya yazmakla kalmaz, ayn\u0131 zamanda dosyalarla da etkile\u015fime girebilir.<\/p>\n<h4>Dosya Okuma (<code>r file<\/code>)<\/h4>\n<p><code>r file<\/code> komutu, belirtilen dosyan\u0131n i\u00e7eri\u011fini desen alan\u0131n\u0131n i\u00e7eri\u011fi yazd\u0131r\u0131ld\u0131ktan sonra standart \u00e7\u0131kt\u0131ya ekler.<\/p>\n<pre><code class=\"language-bash\">cat ana.txt\n<h2>Ba\u015fl\u0131k<\/h2>\n<h2>---<\/h2>\n<h2>\u0130\u00e7erik<\/h2>\n\ncat ek.txt\n<h2>Ek bilgi 1<\/h2>\n<h2>Ek bilgi 2<\/h2>\n\nsed '\/---\/r ek.txt' ana.txt\n<h2>\u00c7\u0131kt\u0131:<\/h2>\n<h2>Ba\u015fl\u0131k<\/h2>\n<h2>---<\/h2>\n<h2>Ek bilgi 1<\/h2>\n<h2>Ek bilgi 2<\/h2>\n<h2>\u0130\u00e7erik<\/code><\/pre>\n<\/h2>\n<p>Bu, bir dosyan\u0131n belirli bir yerine ba\u015fka bir dosyan\u0131n i\u00e7eri\u011fini eklemek i\u00e7in kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<h4>Dosya Yazma (<code>w file<\/code>)<\/h4>\n<p><code>w file<\/code> komutu, desen alan\u0131n\u0131n i\u00e7eri\u011fini belirtilen dosyaya yazar. Bu dosya, <code>sed<\/code> komutu \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda olu\u015fturulur veya \u00fczerine yaz\u0131l\u0131r.<\/p>\n<pre><code class=\"language-bash\">cat log.txt\n<h2>HATA: Disk dolu<\/h2>\n<h2>B\u0130LG\u0130: Sistem ba\u015flat\u0131ld\u0131<\/h2>\n<h2>UYARI: Bellek d\u00fc\u015f\u00fck<\/h2>\n<h2>HATA: A\u011f ba\u011flant\u0131s\u0131 kesildi<\/h2>\n\nsed '\/HATA\/w hatalar.log' log.txt\n<h2>hatalar.log dosyas\u0131na sadece \"HATA\" i\u00e7eren sat\u0131rlar yaz\u0131l\u0131r.<\/code><\/pre>\n<\/h2>\n<h4>In-place D\u00fczenleme (<code>-i<\/code> se\u00e7ene\u011fi &#8211; GNU sed)<\/h4>\n<p><code>-i<\/code> se\u00e7ene\u011fi, <code>sed<\/code>&#8216;in \u00e7\u0131kt\u0131lar\u0131 standart \u00e7\u0131kt\u0131ya yazmak yerine do\u011frudan giri\u015f dosyas\u0131n\u0131 de\u011fi\u015ftirmesini sa\u011flar. Bu, dikkatli kullan\u0131lmas\u0131 gereken g\u00fc\u00e7l\u00fc bir \u00f6zelliktir.<\/p>\n<pre><code class=\"language-bash\"># Dikkatli olun: Orijinal dosyay\u0131 de\u011fi\u015ftirir!\nsed -i 's\/eski\/yeni\/g' dosya.txt<\/code><\/pre>\n<p>Yedekleme yapmak i\u00e7in <code>-i<\/code> se\u00e7ene\u011fine bir uzant\u0131 verilebilir:<\/p>\n<pre><code class=\"language-bash\"># dosya.txt'nin yede\u011fini dosya.txt.bak olarak olu\u015fturur\nsed -i.bak 's\/eski\/yeni\/g' dosya.txt<\/code><\/pre>\n<p>Bu, hatal\u0131 bir i\u015flem durumunda orijinal dosyaya geri d\u00f6nmenizi sa\u011flar.<\/p>\n<h3>\u00c7oklu Komut Dosyalar\u0131 ve Betikler<\/h3>\n<p>Tek bir <code>sed<\/code> \u00e7a\u011fr\u0131s\u0131nda birden fazla komut kullanman\u0131n iki ana yolu vard\u0131r:<\/p>\n<p>*   <strong><code>-e<\/code> se\u00e7ene\u011fi:<\/strong> Her komut i\u00e7in ayr\u0131 bir <code>-e<\/code> se\u00e7ene\u011fi kullan\u0131n.<\/p>\n<pre><code class=\"language-bash\">echo \"Merhaba D\u00fcnya\" | sed -e 's\/Merhaba\/Selam\/' -e 's\/D\u00fcnya\/Evren\/'\n    # \u00c7\u0131kt\u0131: Selam Evren<\/code><\/pre>\n<p>*   <strong><code>-f<\/code> se\u00e7ene\u011fi:<\/strong> Komutlar\u0131 bir dosyaya yaz\u0131n ve <code>sed<\/code>&#8216;e bu dosyay\u0131 <code>--file<\/code> veya <code>-f<\/code> se\u00e7ene\u011fiyle belirtin. Bu, karma\u015f\u0131k ve uzun <code>sed<\/code> betikleri i\u00e7in idealdir.<\/p>\n<p>    <code>sed_script.sed<\/code> i\u00e7eri\u011fi:<\/p>\n<pre><code class=\"language-sed\"># Bu bir sed beti\u011fidir\n    s\/Merhaba\/Selam\/\n    s\/D\u00fcnya\/Evren\/\n    \/^$\/d # Bo\u015f sat\u0131rlar\u0131 sil<\/code><\/pre>\n<p>    Komutu \u00e7al\u0131\u015ft\u0131rma:<\/p>\n<pre><code class=\"language-bash\">echo \"Merhaba D\u00fcnya\\n\\nBu bir test.\" | sed -f sed_script.sed\n    # \u00c7\u0131kt\u0131:\n    # Selam Evren\n    # Bu bir test.<\/code><\/pre>\n<p><code>sed<\/code> betiklerinde <code>#<\/code> ile ba\u015flayan sat\u0131rlar yorum sat\u0131rlar\u0131d\u0131r.<\/p>\n<h3>Pratik \u00d6rnekler ve Senaryolar<\/h3>\n<p><code>sed<\/code>&#8216;in geli\u015fmi\u015f \u00f6zelliklerini kullanarak \u00e7e\u015fitli g\u00fcnl\u00fck g\u00f6revleri otomatikle\u015ftirebiliriz.<\/p>\n<h4>1. XML\/HTML Etiketlerini Kald\u0131rma\/De\u011fi\u015ftirme<\/h4>\n<pre><code class=\"language-bash\">echo \"<p>Bu bir <b>kal\u0131n<\/b> metindir.<\/p>\" | sed 's\/<[^>]*>\/\/g'\n<h2>\u00c7\u0131kt\u0131: Bu bir kal\u0131n metindir.<\/code><\/pre>\n<\/h2>\n<p>Bu komut, <code><<\/code> ile ba\u015flay\u0131p <code>><\/code> ile biten her \u015feyi (etiketleri) bo\u015f bir dizeyle de\u011fi\u015ftirir.<\/p>\n<h4>2. Log Dosyalar\u0131n\u0131 Analiz Etme<\/h4>\n<p>Belirli bir zaman aral\u0131\u011f\u0131ndaki veya belirli bir hata t\u00fcr\u00fcndeki sat\u0131rlar\u0131 filtreleme.<\/p>\n<pre><code class=\"language-bash\"># 2023-10-26 tarihli HATA mesajlar\u0131n\u0131 \u00e7ekme\nsed -n '\/^\\[2023-10-26.*HATA\/p' uygulama.log\n\n<h2>Belirli bir hatan\u0131n tekrar eden sat\u0131rlar\u0131n\u0131 tekille\u015ftirme (basit)<\/h2>\n<h2>Sadece yan yana ayn\u0131 sat\u0131rlar\u0131 siler, dosyan\u0131n tamam\u0131nda tekille\u015ftirmez.<\/h2>\nsed '$!N; \/^(.+)\\n\\1$\/!P; D' log.txt<\/code><\/pre>\n<h4>3. CSV Dosyalar\u0131n\u0131 \u0130\u015fleme<\/h4>\n<p>Belirli bir s\u00fctunu de\u011fi\u015ftirme veya s\u00fctunlar\u0131n yerini de\u011fi\u015ftirme.<\/p>\n<pre><code class=\"language-bash\">echo \"ad,soyad,yas\" | sed 's\/\\(.<em>\\),\\(.<\/em>\\),\\(.*\\)\/\\3,\\2,\\1\/'\n<h2>\u00c7\u0131kt\u0131: yas,soyad,ad<\/code><\/pre>\n<\/h2>\n<p>Bu \u00f6rnek, CSV ba\u015fl\u0131klar\u0131n\u0131n s\u0131ras\u0131n\u0131 de\u011fi\u015ftirir.<\/p>\n<h4>4. Tekrarlayan Sat\u0131rlar\u0131 Kald\u0131rma (Unique)<\/h4>\n<p><code>sed<\/code> tek ba\u015f\u0131na <code>uniq<\/code> kadar g\u00fc\u00e7l\u00fc de\u011fildir, ancak ard\u0131\u015f\u0131k tekrarlayan sat\u0131rlar\u0131 kald\u0131rabilir.<\/p>\n<pre><code class=\"language-bash\">cat liste.txt\n<h2>elma<\/h2>\n<h2>elma<\/h2>\n<h2>armut<\/h2>\n<h2>muz<\/h2>\n<h2>muz<\/h2>\n<h2>muz<\/h2>\n<h2>\u00e7ilek<\/h2>\n\nsed '$!N; \/^(.+)\\n\\1$\/!P; D' liste.txt\n<h2>\u00c7\u0131kt\u0131:<\/h2>\n<h2>elma<\/h2>\n<h2>armut<\/h2>\n<h2>muz<\/h2>\n<h2>\u00e7ilek<\/code><\/pre>\n<\/h2>\n<p>Bu komutun a\u00e7\u0131klamas\u0131:<br \/>\n*   <code>$!N<\/code>: Son sat\u0131r de\u011filse, bir sonraki sat\u0131r\u0131 desen alan\u0131na ekle. B\u00f6ylece desen alan\u0131nda <code>sat\u0131r1\\nsat\u0131r2<\/code> olur.<br \/>\n*   <code>\/^(.+)\\n\\1$\/<\/code>: Desen alan\u0131ndaki iki sat\u0131r\u0131n ayn\u0131 olup olmad\u0131\u011f\u0131n\u0131 kontrol eder. <code>(.+)<\/code> ilk sat\u0131r\u0131 yakalar, <code>\\n\\1<\/code> ise ikinci sat\u0131r\u0131n ilk sat\u0131rla ayn\u0131 oldu\u011funu kontrol eder.<br \/>\n*   <code>!P<\/code>: E\u011fer iki sat\u0131r ayn\u0131 DE\u011e\u0130LSE, desen alan\u0131n\u0131n ilk sat\u0131r\u0131n\u0131 yazd\u0131r (<code>P<\/code>).<br \/>\n*   <code>D<\/code>: Desen alan\u0131n\u0131n ilk sat\u0131r\u0131n\u0131 sil ve d\u00f6ng\u00fcy\u00fc yeniden ba\u015flat. Bu, <code>sed<\/code>'in <code>sat\u0131r2<\/code> ile devam etmesini sa\u011flar.<br \/>\n    E\u011fer iki sat\u0131r ayn\u0131ysa, <code>!P<\/code> \u00e7al\u0131\u015fmaz, <code>D<\/code> ise ilk sat\u0131r\u0131 siler ve <code>sed<\/code> ikinci sat\u0131rla devam eder, b\u00f6ylece tekrarlayan sat\u0131r yazd\u0131r\u0131lmaz.<\/p>\n<h4>5. Birden Fazla Sat\u0131r\u0131 Tek Bir Sat\u0131ra Birle\u015ftirme<\/h4>\n<pre><code class=\"language-bash\">cat coklu_satir.txt\n<h2>Sat\u0131r bir.<\/h2>\n<h2>Sat\u0131r iki.<\/h2>\n<h2>Sat\u0131r \u00fc\u00e7.<\/h2>\n\nsed ':a; N; $!ba; s\/\\n\/ \/g' coklu_satir.txt\n<h2>\u00c7\u0131kt\u0131: Sat\u0131r bir. Sat\u0131r iki. Sat\u0131r \u00fc\u00e7.<\/code><\/pre>\n<\/h2>\n<p>A\u00e7\u0131klama:<br \/>\n*   <code>:a<\/code>: <code>a<\/code> etiketini tan\u0131mlar.<br \/>\n*   <code>N<\/code>: Bir sonraki sat\u0131r\u0131 desen alan\u0131na ekler.<br \/>\n*   <code>$!ba<\/code>: E\u011fer son sat\u0131r de\u011filse (<code>$!<\/code>), <code>a<\/code> etiketine dallan (<code>ba<\/code>). Bu, t\u00fcm dosya tek bir sat\u0131r olana kadar <code>N<\/code> komutunu tekrar tekrar \u00e7al\u0131\u015ft\u0131r\u0131r.<br \/>\n*   <code>s\/\\n\/ \/g<\/code>: T\u00fcm yeni sat\u0131r karakterlerini bo\u015flukla de\u011fi\u015ftirir.<\/p>\n<h3>Sed ve Di\u011fer Ara\u00e7lar<\/h3>\n<p><code>sed<\/code>, Linux'un \"her ara\u00e7 tek bir i\u015fi iyi yapar\" felsefesine uygun olarak, di\u011fer komutlarla borular (<code>|<\/code>) arac\u0131l\u0131\u011f\u0131yla birle\u015ftirildi\u011finde ger\u00e7ek g\u00fcc\u00fcn\u00fc g\u00f6sterir.<\/p>\n<p>*   <strong><code>grep<\/code> ile:<\/strong> <code>grep<\/code> ile \u00f6nce filtreleme yap\u0131p, ard\u0131ndan <code>sed<\/code> ile d\u00f6n\u00fc\u015ft\u00fcrme.<\/p>\n<pre><code class=\"language-bash\">grep \"hata\" log.txt | sed 's\/HATA: \/\/g'<\/code><\/pre>\n<p>*   <strong><code>awk<\/code> ile:<\/strong> <code>sed<\/code>'in karma\u015f\u0131k metin manip\u00fclasyonlar\u0131 i\u00e7in yetersiz kald\u0131\u011f\u0131 durumlarda <code>awk<\/code> daha uygun olabilir, ancak ikisi genellikle birbirini tamamlar.<\/p>\n<pre><code class=\"language-bash\"># awk ile 3. s\u00fctunu de\u011fi\u015ftirme\n    awk -F',' '{ $3 = \"YENI_DEGER\"; print }' dosya.csv\n    # sed ile ayn\u0131 \u015feyi yapmak daha zordur, ancak m\u00fcmk\u00fcnd\u00fcr.\n    # sed 's\/^\\([^,]<em>,\\)\\([^,]<\/em>,\\)[^,]*\/\\1\\2YENI_DEGER\/' dosya.csv<\/code><\/pre>\n<p>*   <strong><code>sort<\/code> ve <code>uniq<\/code> ile:<\/strong><\/p>\n<pre><code class=\"language-bash\">cat liste.txt | sort | uniq | sed 's\/^\/- \/' # S\u0131ral\u0131 ve tekil listeye madde i\u015faretleri ekle<\/code><\/pre>\n<h3>S\u0131k Kar\u015f\u0131la\u015f\u0131lan Hatalar ve \u0130pu\u00e7lar\u0131<\/h3>\n<p>*   <strong>Tek T\u0131rnak vs. \u00c7ift T\u0131rnak:<\/strong> <code>sed<\/code> komutlar\u0131n\u0131 tek t\u0131rnak <code>' '<\/code> i\u00e7ine almak en iyisidir, \u00e7\u00fcnk\u00fc bu kabu\u011fun \u00f6zel karakterleri (<code>$<\/code>, <code>\\<\/code>, `<code> <\/code> `<code>) yorumlamas\u0131n\u0131 engeller. \u00c7ift t\u0131rnak kullan\u0131rsan\u0131z, kabuk <\/code>$DE\u011e\u0130\u015eKEN<code> gibi ifadeleri geni\u015fletir ve bu istenmeyen sonu\u00e7lara yol a\u00e7abilir.<br \/>\n*   <strong>D\u00fczenli \u0130fade Ka\u00e7\u0131\u015f Karakterleri:<\/strong> <\/code>sed<code>'in temel d\u00fczenli ifadeleri (BRE) ve geni\u015fletilmi\u015f d\u00fczenli ifadeleri (ERE) aras\u0131nda farkl\u0131l\u0131klar vard\u0131r. GNU <\/code>sed<code> varsay\u0131lan olarak BRE kullan\u0131r, ancak <\/code>-r<code> veya <\/code>--regexp-extended<code> se\u00e7ene\u011fiyle ERE kullanabilirsiniz. BRE'de <\/code>(<code>, <\/code>)<code>, <\/code>{<code>, <\/code>}<code> gibi karakterlerin ka\u00e7\u0131\u015f karakteri <\/code>\\<code> ile (<\/code>\\(<code>, <\/code>\\)<code>) kullan\u0131lmas\u0131 gerekirken, ERE'de buna gerek yoktur.<br \/>\n*   <strong>GNU <\/code>sed<code> vs. BSD <\/code>sed<code>:<\/strong> Farkl\u0131 i\u015fletim sistemlerindeki <\/code>sed<code> uygulamalar\u0131 aras\u0131nda k\u00fc\u00e7\u00fck farkl\u0131l\u0131klar olabilir (\u00f6zellikle <\/code>-i<code> se\u00e7ene\u011finin kullan\u0131m\u0131 veya baz\u0131 geli\u015fmi\u015f komutlar). Betiklerinizin ta\u015f\u0131nabilirli\u011fini d\u00fc\u015f\u00fcn\u00fcyorsan\u0131z bu farkl\u0131l\u0131klara dikkat edin.<br \/>\n*   <strong>Test Etme:<\/strong> Karma\u015f\u0131k <\/code>sed<code> komutlar\u0131n\u0131 her zaman k\u00fc\u00e7\u00fck, test dosyalar\u0131 \u00fczerinde veya <\/code>-n<code> ve <\/code>p<code> komutlar\u0131n\u0131 kullanarak test edin. <\/code>sed -n 'komut' dosya.txt<code> ile sadece istedi\u011finiz \u00e7\u0131kt\u0131lar\u0131 al\u0131p almad\u0131\u011f\u0131n\u0131z\u0131 kontrol edebilirsiniz.<br \/>\n*   <strong>A\u015f\u0131r\u0131 Karma\u015f\u0131kl\u0131k:<\/strong> Bazen bir <\/code>sed<code> beti\u011fi \u00e7ok karma\u015f\u0131k hale geldi\u011finde, <\/code>awk<code> veya Python\/Perl gibi daha y\u00fcksek seviyeli bir programlama diline ge\u00e7mek daha mant\u0131kl\u0131 olabilir. <\/code>sed<code>'in g\u00fc\u00e7l\u00fc oldu\u011fu yer, tek ge\u00e7i\u015fte metin ak\u0131\u015flar\u0131n\u0131 verimli bir \u015fekilde manip\u00fcle etmektir.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu makalede, <\/code>sed<code>'in temel yeteneklerinin \u00f6tesine ge\u00e7erek, geli\u015fmi\u015f adresleme mekanizmalar\u0131n\u0131, <\/code>s<code> komutunun derinlemesine kullan\u0131m\u0131n\u0131, <\/code>sed<code>'in dahili ak\u0131\u015f kontrol\u00fcn\u00fc (pattern space, hold space, dallanma komutlar\u0131) ve dosya i\u015flemleriyle entegrasyonunu detayl\u0131ca inceledik. Ayr\u0131ca, pratik senaryolar \u00fczerinden <\/code>sed<code>'in nas\u0131l g\u00fc\u00e7l\u00fc ve esnek bir ara\u00e7 olabilece\u011fini g\u00f6sterdik ve di\u011fer Linux ara\u00e7lar\u0131yla i\u015f birli\u011finin \u00f6nemine de\u011findik.<\/p>\n<p><\/code>sed<code>, ilk bak\u0131\u015fta karma\u015f\u0131k g\u00f6r\u00fcnebilen, ancak ustala\u015ft\u0131k\u00e7a metin i\u015fleme g\u00f6revlerini otomatikle\u015ftirmede ve veri manip\u00fclasyonunda vazge\u00e7ilmez bir yard\u0131mc\u0131 haline gelen bir ara\u00e7t\u0131r. Geli\u015fmi\u015f \u00f6zellikleri, onu basit bir arama-de\u011fi\u015ftirme arac\u0131ndan \u00e7ok daha fazlas\u0131 yapar; asl\u0131nda bir metin i\u015fleme programlama dilidir. Bu makalede edindi\u011finiz bilgilerle, g\u00fcnl\u00fck Linux kullan\u0131m\u0131n\u0131zda daha verimli ve g\u00fc\u00e7l\u00fc \u00e7\u00f6z\u00fcmler \u00fcretebilecek, metin ak\u0131\u015flar\u0131 \u00fczerinde tam kontrol sahibi olabileceksiniz. <\/code>sed`'in derinliklerini ke\u015ffetmeye devam edin ve bu g\u00fc\u00e7l\u00fc arac\u0131n potansiyelini tam olarak kullan\u0131n.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Intermediate Sed: Linux Ortam\u0131nda Metin Ak\u0131\u015flar\u0131n\u0131 Manip\u00fcle Etmek\nGiri\u015f\nLinux ve UNIX benzeri sistemlerde metin i\u015fleme, g\u00fcnl\u00fck sistem y\u00f6ne","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[241],"tags":[],"class_list":{"0":"post-34739","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-linux","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Intermediate Sed: Linux Ortam\u0131nda Metin Ak\u0131\u015flar\u0131n\u0131 Manip\u00fcle Etmek - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/intermediate-sed-linux-ortaminda-metin-akislarini-manipule-etmek\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Intermediate Sed: Linux Ortam\u0131nda Metin Ak\u0131\u015flar\u0131n\u0131 Manip\u00fcle Etmek\" \/>\n<meta property=\"og:description\" content=\"Intermediate Sed: Linux Ortam\u0131nda Metin Ak\u0131\u015flar\u0131n\u0131 Manip\u00fcle Etmek Giri\u015f Linux ve UNIX benzeri sistemlerde metin i\u015fleme, g\u00fcnl\u00fck sistem y\u00f6ne\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/intermediate-sed-linux-ortaminda-metin-akislarini-manipule-etmek\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-21T08:40:50+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"19 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/intermediate-sed-linux-ortaminda-metin-akislarini-manipule-etmek\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/intermediate-sed-linux-ortaminda-metin-akislarini-manipule-etmek\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Intermediate Sed: Linux Ortam\u0131nda Metin Ak\u0131\u015flar\u0131n\u0131 Manip\u00fcle Etmek\",\"datePublished\":\"2025-11-21T08:40:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/intermediate-sed-linux-ortaminda-metin-akislarini-manipule-etmek\/\"},\"wordCount\":2474,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Linux\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/intermediate-sed-linux-ortaminda-metin-akislarini-manipule-etmek\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/intermediate-sed-linux-ortaminda-metin-akislarini-manipule-etmek\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/intermediate-sed-linux-ortaminda-metin-akislarini-manipule-etmek\/\",\"name\":\"Intermediate Sed: Linux Ortam\u0131nda Metin Ak\u0131\u015flar\u0131n\u0131 Manip\u00fcle Etmek - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-21T08:40:50+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/intermediate-sed-linux-ortaminda-metin-akislarini-manipule-etmek\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/intermediate-sed-linux-ortaminda-metin-akislarini-manipule-etmek\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/intermediate-sed-linux-ortaminda-metin-akislarini-manipule-etmek\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Intermediate Sed: Linux Ortam\u0131nda Metin Ak\u0131\u015flar\u0131n\u0131 Manip\u00fcle Etmek\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Intermediate Sed: Linux Ortam\u0131nda Metin Ak\u0131\u015flar\u0131n\u0131 Manip\u00fcle Etmek - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/intermediate-sed-linux-ortaminda-metin-akislarini-manipule-etmek\/","og_locale":"tr_TR","og_type":"article","og_title":"Intermediate Sed: Linux Ortam\u0131nda Metin Ak\u0131\u015flar\u0131n\u0131 Manip\u00fcle Etmek","og_description":"Intermediate Sed: Linux Ortam\u0131nda Metin Ak\u0131\u015flar\u0131n\u0131 Manip\u00fcle Etmek Giri\u015f Linux ve UNIX benzeri sistemlerde metin i\u015fleme, g\u00fcnl\u00fck sistem y\u00f6ne","og_url":"https:\/\/fatihsoysal.com\/blog\/intermediate-sed-linux-ortaminda-metin-akislarini-manipule-etmek\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-21T08:40:50+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"19 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/intermediate-sed-linux-ortaminda-metin-akislarini-manipule-etmek\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/intermediate-sed-linux-ortaminda-metin-akislarini-manipule-etmek\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Intermediate Sed: Linux Ortam\u0131nda Metin Ak\u0131\u015flar\u0131n\u0131 Manip\u00fcle Etmek","datePublished":"2025-11-21T08:40:50+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/intermediate-sed-linux-ortaminda-metin-akislarini-manipule-etmek\/"},"wordCount":2474,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Linux"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/intermediate-sed-linux-ortaminda-metin-akislarini-manipule-etmek\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/intermediate-sed-linux-ortaminda-metin-akislarini-manipule-etmek\/","url":"https:\/\/fatihsoysal.com\/blog\/intermediate-sed-linux-ortaminda-metin-akislarini-manipule-etmek\/","name":"Intermediate Sed: Linux Ortam\u0131nda Metin Ak\u0131\u015flar\u0131n\u0131 Manip\u00fcle Etmek - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-21T08:40:50+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/intermediate-sed-linux-ortaminda-metin-akislarini-manipule-etmek\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/intermediate-sed-linux-ortaminda-metin-akislarini-manipule-etmek\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/intermediate-sed-linux-ortaminda-metin-akislarini-manipule-etmek\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Intermediate Sed: Linux Ortam\u0131nda Metin Ak\u0131\u015flar\u0131n\u0131 Manip\u00fcle Etmek"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34739","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=34739"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34739\/revisions"}],"predecessor-version":[{"id":34740,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34739\/revisions\/34740"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=34739"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=34739"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=34739"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}