A text-based bookmark manager rendered in a web page
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

2046 lines
156 KiB

<!DOCTYPE html>
<html itemscope itemtype="https://schema.org/QAPage" class="html__responsive " lang="en">
<head>
<title>bash - How to use SED to find and replace URL strings with the &quot;/&quot; character in the targeted strings? - Stack Overflow</title>
<link rel="shortcut icon" href="https://cdn.sstatic.net/Sites/stackoverflow/Img/favicon.ico?v=ec617d715196">
<link rel="apple-touch-icon" href="https://cdn.sstatic.net/Sites/stackoverflow/Img/apple-touch-icon.png?v=c78bd457575a">
<link rel="image_src" href="https://cdn.sstatic.net/Sites/stackoverflow/Img/apple-touch-icon.png?v=c78bd457575a">
<link rel="search" type="application/opensearchdescription+xml" title="Stack Overflow" href="/opensearch.xml">
<link rel="canonical" href="https://stackoverflow.com/questions/16778667/how-to-use-sed-to-find-and-replace-url-strings-with-the-character-in-the-tar" />
<meta name="viewport" content="width=device-width, height=device-height, initial-scale=1.0, minimum-scale=1.0">
<meta property="og:type" content= "website" />
<meta property="og:url" content="https://stackoverflow.com/questions/16778667/how-to-use-sed-to-find-and-replace-url-strings-with-the-character-in-the-tar"/>
<meta property="og:site_name" content="Stack Overflow" />
<meta property="og:image" itemprop="image primaryImageOfPage" content="https://cdn.sstatic.net/Sites/stackoverflow/Img/apple-touch-icon@2.png?v=73d79a89bded" />
<meta name="twitter:card" content="summary"/>
<meta name="twitter:domain" content="stackoverflow.com"/>
<meta name="twitter:title" property="og:title" itemprop="name" content="How to use SED to find and replace URL strings with the &quot;/&quot; character in the targeted strings?" />
<meta name="twitter:description" property="og:description" itemprop="description" content="I&#x27;m attempting to use SED through OS X Terminal to perform a find and replace.&#xA;&#xA;Imagine I have this string littered throughout the text file: http://www.find.com/page&#xA;&#xA;And I want to replace it with..." />
<script id="webpack-public-path" type="text/uri-list">https://cdn.sstatic.net/</script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.js"></script>
<script defer src="https://cdn.sstatic.net/Js/third-party/npm/@stackoverflow/stacks/dist/js/stacks.min.js?v=d5f780ae3281"></script>
<script src="https://cdn.sstatic.net/Js/stub.en.js?v=d1b2dbc97e66"></script>
<link rel="stylesheet" type="text/css" href="https://cdn.sstatic.net/Shared/stacks.css?v=dbee492db9b7">
<link rel="stylesheet" type="text/css" href="https://cdn.sstatic.net/Sites/stackoverflow/primary.css?v=d540aba22a4d">
<script>
StackExchange.ready(function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.initSnippetRenderer();
});
StackExchange.using("postValidation", function () {
StackExchange.postValidation.initOnBlurAndSubmit($('#post-form'), 2, 'answer');
});
StackExchange.question.init({showAnswerHelp:true,showTrendingSortLaunchPopover:false,showTrendingSortPostLaunchPopover:false,totalCommentCount:0,shownCommentCount:0,enableTables:true,questionId:16778667});
styleCode();
StackExchange.realtime.subscribeToQuestion('1', '16778667');
StackExchange.using("gps", function () { StackExchange.gps.trackOutboundClicks('#content', '.js-post-body'); });
});
</script>
<link rel="stylesheet" type="text/css" href="https://cdn.sstatic.net/Shared/Channels/channels.css?v=db82e15fc6d3">
<script type="application/json" data-role="module-args" data-module-name="Shared/options.mod">{"options":{"locale":"en","serverTime":1709834423,"routeName":"Questions/Show","stackAuthUrl":"https://stackauth.com","networkMetaHostname":"meta.stackexchange.com","site":{"name":"Stack Overflow","description":"Q\u0026A for professional and enthusiast programmers","isNoticesTabEnabled":true,"enableNewTagCreationWarning":true,"insertSpaceAfterNameTabCompletion":false,"id":1,"cookieDomain":".stackoverflow.com","childUrl":"https://meta.stackoverflow.com","negativeVoteScoreFloor":null,"enableSocialMediaInSharePopup":true,"protocol":"https"},"user":{"fkey":"27b7033a38c9489b51a2db328ed82e00b602b223db5e55f48328eb2bf4b6fccf","tid":"07e99dbe-712e-4e65-bee0-417b71db4816","rep":0,"isAnonymous":true,"isAnonymousNetworkWide":true,"ab":{"new_header_design_low_rep":{"v":"modal_signup","g":2}}},"events":{"postType":{"question":1},"postEditionSection":{"title":1,"body":2,"tags":3}}}}</script>
<script type="application/json" data-role="module-args" data-module-name="Shared/settings.mod">{"settings":{"subscriptions":{"defaultFreemiumMaxTrueUpSeats":50,"defaultBasicMaxTrueUpSeats":250,"defaultMaxTrueUpSeats":1000},"userMessaging":{"showNewFeatureNotice":true},"markdown":{"enableTables":true},"snippets":{"snippetsEnabled":true,"renderDomain":"stacksnippets.net"},"flags":{"allowRetractingFlags":true,"allowRetractingCommentFlags":true},"tags":{},"elections":{"opaVoteResultsBaseUrl":"https://www.opavote.com/results/"},"site":{"stacksEditorPreviewEnabled":true,"styleCode":true,"forceHttpsImages":true,"enableUserHovercards":true,"allowImageUploads":true,"enableImgurHttps":true},"mentions":{"maxNumUsersInDropdown":50},"comments":{},"auth":{},"search":{},"questions":{"maxTitleSize":150,"enableQuestionTitleLengthLiveWarning":true,"enableSavesFeature":true,"questionTitleLengthStartLiveWarningChars":50},"intercom":{"appId":"inf0secd"},"paths":{"jQueryUIJSPath":"https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.0/jquery-ui.min.js","jQueryUICSSPath":"https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.0/themes/smoothness/jquery-ui.css"},"legal":{"oneTrustTCFConfigId":"c3d9f1e3-55f3-4eba-b268-46cee4c6789c","useCustomConsent":false},"accounts":{"currentPasswordRequiredForChangingStackIdPassword":true}}}</script>
<script>StackExchange.init();</script>
<script>
StackExchange.using.setCacheBreakers({"Js/adops.en.js":"6da43f5e0a84","Js/ask.en.js":"","Js/begin-edit-event.en.js":"20edbaccceae","Js/copy-transpiled.en.js":"d31dc7eba3bc","Js/events.en.js":"","Js/explore-qlist.en.js":"2b1f34938b8b","Js/full-anon.en.js":"1d0e9973fffb","Js/full.en.js":"1ae611a60ee1","Js/highlightjs-loader.en.js":"510e2f94c2bf","Js/inline-tag-editing.en.js":"3e8cc64ee9d6","Js/keyboard-shortcuts.en.js":"107c2ac31497","Js/markdown-it-loader.en.js":"5818ef89ff9d","Js/mentions-transpiled.en.js":"d398f7c1afbf","Js/moderator.en.js":"b16de1b84586","Js/postCollections-transpiled.en.js":"11a255fe9394","Js/post-validation.en.js":"243bf7d290a3","Js/question-editor.en.js":"","Js/review-v2-transpiled.en.js":"d8246fd945d5","Js/revisions.en.js":"47b4d5ac24c9","Js/stacks-editor.en.js":"58f53e9e8a88","Js/tageditor.en.js":"dc13482a67f8","Js/tageditornew.en.js":"b3d2f0187c1a","Js/tagsuggestions.en.js":"bd6ec908f2a7","Js/unlimited-transpiled.en.js":"f26a1d5f3365","Js/wmd.en.js":"102d8a628997","Js/snippet-javascript-codemirror.en.js":"ae1dcf38deb7"});
StackExchange.using("gps", function() {
StackExchange.gps.init(false);
});
</script>
<noscript id="noscript-css"><style>body,.s-topbar{margin-top:1.9em}</style></noscript>
</head>
<body class="question-page unified-theme">
<div id="notify-container"></div>
<div id="custom-header"></div>
<header class="s-topbar ps-fixed t0 l0 js-top-bar">
<div class="s-topbar--container">
<a href="#" class="s-topbar--menu-btn js-left-sidebar-toggle" role="menuitem" aria-haspopup="true" aria-controls="left-sidebar" aria-expanded="false"><span></span></a>
<div class="topbar-dialog leftnav-dialog js-leftnav-dialog dno">
<div class="left-sidebar js-unpinned-left-sidebar" data-can-be="left-sidebar" data-is-here-when="sm"></div>
</div>
<a href="https://stackoverflow.com" class="s-topbar--logo js-gps-track"
data-gps-track="top_nav.click({is_current:false, location:2, destination:8})">
<span class="-img _glyph">Stack Overflow</span>
</a>
<ol class="s-navigation" role="presentation">
<li class="md:d-none">
<a href="https://stackoverflow.co/" class="s-navigation--item js-gps-track"
data-gps-track="top_nav.products.click({location:2, destination:7})"
data-ga="[&quot;top navigation&quot;,&quot;about menu click&quot;,null,null,null]">About</a>
</li>
<li>
<a href="#"
class="s-navigation--item js-gps-track js-products-menu"
aria-controls="products-popover"
data-controller="s-popover"
data-action="s-popover#toggle"
data-s-popover-placement="bottom"
data-s-popover-toggle-class="is-selected"
data-gps-track="top_nav.products.click({location:2, destination:1})"
data-ga="[&quot;top navigation&quot;,&quot;products menu click&quot;,null,null,null]">
Products
</a>
</li>
<li class="md:d-none">
<a href="https://stackoverflow.co/teams/" class="s-navigation--item js-gps-track"
data-gps-track="top_nav.products.click({location:2, destination:7})"
data-ga="[&quot;top navigation&quot;,&quot;learn more - teams&quot;,null,null,null]">For Teams</a>
</li>
</ol>
<div class="s-popover ws2 mtn2 p0"
id="products-popover"
role="menu"
aria-hidden="true">
<div class="s-popover--arrow"></div>
<ol class="list-reset s-anchors s-anchors__inherit">
<li class="m6">
<a href="/questions" class="bar-sm p6 d-block h:bg-black-225 js-gps-track"
data-gps-track="top_nav.products.click({location:2, destination:2})"
data-ga="[&quot;top navigation&quot;,&quot;public qa submenu click&quot;,null,null,null]">
<span class="fs-body1 d-block">Stack Overflow</span>
<span class="fs-caption d-block fc-black-400">Public questions &amp; answers</span>
</a>
</li>
<li class="m6">
<a href="https://stackoverflow.co/teams/" class="bar-sm p6 d-block h:bg-black-225 js-gps-track"
data-gps-track="top_nav.products.click({location:2, destination:3})"
data-ga="[&quot;top navigation&quot;,&quot;teams submenu click&quot;,null,null,null]">
<span class="fs-body1 d-block">Stack Overflow for Teams</span>
<span class="fs-caption d-block fc-black-400">Where developers &amp; technologists share private knowledge with coworkers</span>
</a>
</li>
<li class="m6">
<a href="https://stackoverflow.co/talent/" class="bar-sm p6 d-block h:bg-black-225 js-gps-track"
data-gps-track="top_nav.products.click({location:2, destination:5})"
data-ga="[&quot;top navigation&quot;,&quot;talent submenu click&quot;,null,null,null]">
<span class="fs-body1 d-block">Talent</span>
<span class="fs-caption d-block fc-black-400">
Build your employer brand
</span>
</a>
</li>
<li class="m6">
<a href="https://stackoverflow.co/advertising/" class="bar-sm p6 d-block h:bg-black-225 js-gps-track"
data-gps-track="top_nav.products.click({location:2, destination:6})"
data-ga="[&quot;top navigation&quot;,&quot;advertising submenu click&quot;,null,null,null]">
<span class="fs-body1 d-block">Advertising</span>
<span class="fs-caption d-block fc-black-400">Reach developers &amp; technologists worldwide</span>
</a>
</li>
<li class="bt bc-black-200 py6 px6 bbr-md">
<a href="https://stackoverflow.co/labs/" class="bar-sm p6 d-block h:bg-black-225 js-gps-track"
data-gps-track="top_nav.products.click({location:2, destination:7})"
data-ga="[&quot;top navigation&quot;,&quot;labs submenu click&quot;,null,null,null]">
<span class="fs-body1 d-block">Labs</span>
<span class="fs-caption d-block fc-black-400">The future of collective knowledge sharing</span>
</a>
</li>
<li class="bg-black-100 bt bc-black-200 py6 px6 bbr-md">
<a href="https://stackoverflow.co/" class="fc-black-400 d-block py6 px6 h:fc-black-600 js-gps-track"
data-gps-track="top_nav.products.click({location:2, destination:7})"
data-ga="[&quot;top navigation&quot;,&quot;about submenu click&quot;,null,null,null]">About the company</a>
</li>
</ol>
</div>
<form id="search" role="search" action=/search class="s-topbar--searchbar js-searchbar " autocomplete="off">
<div class="s-topbar--searchbar--input-group">
<input name="q"
type="text"
role="combobox"
placeholder="Search&#x2026;"
value=""
autocomplete="off"
maxlength="240"
class="s-input s-input__search js-search-field "
aria-label="Search"
aria-controls="top-search"
data-controller="s-popover"
data-action="focus->s-popover#show"
data-s-popover-placement="bottom-start" />
<svg aria-hidden="true" class="s-input-icon s-input-icon__search svg-icon iconSearch" width="18" height="18" viewBox="0 0 18 18"><path d="m18 16.5-5.14-5.18h-.35a7 7 0 1 0-1.19 1.19v.35L16.5 18l1.5-1.5ZM12 7A5 5 0 1 1 2 7a5 5 0 0 1 10 0Z"/></svg>
<div class="s-popover p0 wmx100 wmn4 sm:wmn-initial js-top-search-popover" id="top-search" role="menu">
<div class="s-popover--arrow"></div>
<div class="js-spinner p24 d-flex ai-center jc-center d-none">
<div class="s-spinner s-spinner__sm fc-orange-400">
<div class="v-visible-sr">Loading&#x2026;</div>
</div>
</div>
<span class="v-visible-sr js-screen-reader-info"></span>
<div class="js-ac-results overflow-y-auto hmx3 d-none"></div>
<div class="js-search-hints" aria-describedby="Tips for searching"></div>
</div>
</div>
</form>
<nav class="h100 ml-auto overflow-x-auto pr12">
<ol class="s-topbar--content" role="menubar">
<li class="js-topbar-dialog-corral" role="presentation">
<div class="topbar-dialog siteSwitcher-dialog dno" role="menu">
<div class="header fw-wrap">
<h3 class="flex--item">
<a href="https://stackoverflow.com">current community</a>
</h3>
<div class="flex--item fl1">
<div class="ai-center d-flex jc-end">
<button
class="js-close-button s-btn s-btn__muted p0 ml8 d-none sm:d-block"
type="button"
aria-label="Close"
>
<svg aria-hidden="true" class="svg-icon iconClear" width="18" height="18" viewBox="0 0 18 18"><path d="M15 4.41 13.59 3 9 7.59 4.41 3 3 4.41 7.59 9 3 13.59 4.41 15 9 10.41 13.59 15 15 13.59 10.41 9 15 4.41Z"/></svg>
</button>
</div>
</div>
</div>
<div class="modal-content bg-blue-200 current-site-container">
<ul class="current-site">
<li class="d-flex">
<div class="fl1">
<a href="https://stackoverflow.com"
class="current-site-link d-flex gx8 site-link js-gps-track"
data-id="1"
data-gps-track="site_switcher.click({ item_type:3 })">
<div class="favicon favicon-stackoverflow site-icon flex--item" title="Stack Overflow"></div>
<span class="flex--item fl1">
Stack Overflow
</span>
</a>
</div>
<div class="related-links">
<a href="https://stackoverflow.com/help" class="js-gps-track" data-gps-track="site_switcher.click({ item_type:14 })">help</a>
<a href="https://chat.stackoverflow.com/?tab=site&amp;host=stackoverflow.com" class="js-gps-track" data-gps-track="site_switcher.click({ item_type:6 })">chat</a>
</div>
</li>
<li class="related-site d-flex">
<div class="L-shaped-icon-container">
<span class="L-shaped-icon"></span>
</div>
<a href="https://meta.stackoverflow.com"
class="s-block-link px16 d-flex gx8 site-link js-gps-track"
data-id="552"
data-gps-track="site.switch({ target_site:552, item_type:3 }),site_switcher.click({ item_type:4 })">
<div class="favicon favicon-stackoverflowmeta site-icon flex--item" title="Meta Stack Overflow"></div>
<span class="flex--item fl1">
Meta Stack Overflow
</span>
</a>
</li>
</ul>
</div>
<div class="header" id="your-communities-header">
<h3>
your communities </h3>
</div>
<div class="modal-content" id="your-communities-section">
<div class="call-to-login">
<a href="https://stackoverflow.com/users/signup?ssrc=site_switcher&amp;returnurl=https%3a%2f%2fstackoverflow.com%2fquestions%2f16778667%2fhow-to-use-sed-to-find-and-replace-url-strings-with-the-character-in-the-tar" class="login-link js-gps-track" data-gps-track="site_switcher.click({ item_type:10 })">Sign up</a> or <a href="https://stackoverflow.com/users/login?ssrc=site_switcher&amp;returnurl=https%3a%2f%2fstackoverflow.com%2fquestions%2f16778667%2fhow-to-use-sed-to-find-and-replace-url-strings-with-the-character-in-the-tar" class="login-link js-gps-track" data-gps-track="site_switcher.click({ item_type:11 })">log in</a> to customize your list. </div>
</div>
<div class="header">
<h3><a href="https://stackexchange.com/sites">more stack exchange communities</a>
</h3>
<a href="https://stackoverflow.blog" class="float-right">company blog</a>
</div>
<div class="modal-content">
<div class="child-content"></div>
</div>
</div>
</li>
<li role="none"><button class="s-topbar--item s-btn s-btn__icon s-btn__muted d-none sm:d-inline-flex js-searchbar-trigger" role="menuitem" aria-label="Search" aria-haspopup="true" aria-controls="search" title="Click to show search"><svg aria-hidden="true" class="svg-icon iconSearch" width="18" height="18" viewBox="0 0 18 18"><path d="m18 16.5-5.14-5.18h-.35a7 7 0 1 0-1.19 1.19v.35L16.5 18l1.5-1.5ZM12 7A5 5 0 1 1 2 7a5 5 0 0 1 10 0Z"/></svg></button></li>
<li role="none">
<a href="https://stackoverflow.com/users/login?ssrc=head&returnurl=https%3a%2f%2fstackoverflow.com%2fquestions%2f16778667%2fhow-to-use-sed-to-find-and-replace-url-strings-with-the-character-in-the-tar" class="s-topbar--item s-topbar--item__unset s-btn s-btn__outlined ws-nowrap js-gps-track" role="menuitem" rel="nofollow"
data-gps-track="login.click" data-ga="[&quot;top navigation&quot;,&quot;login button click&quot;,null,null,null]">Log in</a>
</li>
<li role="none"><a href="https://stackoverflow.com/users/signup?ssrc=head&returnurl=https%3a%2f%2fstackoverflow.com%2fquestions%2f16778667%2fhow-to-use-sed-to-find-and-replace-url-strings-with-the-character-in-the-tar" class="s-topbar--item s-topbar--item__unset ml4 s-btn s-btn__filled ws-nowrap js-signup-button js-gps-track" role="menuitem" rel="nofollow" data-gps-track="signup.topbar.click" data-ga="[&quot;sign up&quot;,&quot;Sign Up Navigation&quot;,&quot;Header&quot;,null,null]">Sign up</a></li>
</ol>
</nav>
</div>
</header>
<script>
StackExchange.ready(function () { StackExchange.topbar.init(); });
StackExchange.scrollPadding.setPaddingTop(50, 10);
</script>
<div id="top-hero-div" class="">
<div id="signup-dialog-container"></div>
<script type="application/json" data-role="module-args" data-module-name="islands/signup-dialog/index.mod">{"ContainerElementId":"signup-dialog-container","FKey":"27b7033a38c9489b51a2db328ed82e00b602b223db5e55f48328eb2bf4b6fccf","VisitTimeout":30,"ReshowFrequency":3,"ReshowOffset":0,"InactiveTimeBeforeReshow":1.0,"OauthInPopup":false,"ReturnUrlForPopup":"https://stackoverflow.com/users/after-signup/oauth-only","Location":1}</script><script defer src="https://cdn.sstatic.net/Js/webpack-chunks/71.en.js?v=7959a298059a"></script><script defer src="https://cdn.sstatic.net/Js/webpack-chunks/8427.en.js?v=46a04e4e6f05"></script><script defer src="https://cdn.sstatic.net/Js/webpack-chunks/5252.en.js?v=3e04489c620f"></script><script defer src="https://cdn.sstatic.net/Js/webpack-chunks/2931.en.js?v=83097cffefaa"></script><script defer src="https://cdn.sstatic.net/Js/webpack-chunks/4869.en.js?v=30a0f12e1246"></script><script defer src="https://cdn.sstatic.net/Js/islands/signup-dialog.en.js?v=2f65eac83153"></script> </div>
<div class="container">
<div id="left-sidebar" data-is-here-when="md lg" class="left-sidebar js-pinned-left-sidebar ps-relative">
<div class="left-sidebar--sticky-container js-sticky-leftnav">
<nav role="navigation">
<ol class="nav-links">
<li>
<ol class="nav-links">
<li class="ps-relative" aria-current="false">
<a
href="/"
class="s-block-link pl8 js-gps-track nav-links--link -link__with-icon"
data-gps-track="top_nav.click({is_current: false, location:2, destination:8, has_activity_notification:False})"
aria-controls="" data-controller="" data-s-popover-placement="right"
aria-current="false"
data-s-popover-auto-show="true" data-s-popover-hide-on-outside-click="never"
>
<div class="d-flex ai-center">
<svg aria-hidden="true" class="svg-icon iconHome" width="18" height="18" viewBox="0 0 18 18"><path d="M15 10v5a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-5H0l9-9 9 9h-3Zm-8 1v6h4v-6H7Z"/></svg> <span class="-link--channel-name pl6">Home</span>
</div>
</a>
</li>
<li class="ps-relative youarehere" aria-current="true">
<a id="nav-questions"
href="/questions"
class="s-block-link pl8 js-gps-track nav-links--link -link__with-icon"
data-gps-track="top_nav.click({is_current: true, location:2, destination:1, has_activity_notification:False})"
aria-controls="" data-controller="" data-s-popover-placement="right"
aria-current="false"
data-s-popover-auto-show="true" data-s-popover-hide-on-outside-click="never"
>
<div class="d-flex ai-center">
<svg aria-hidden="true" class="svg-icon iconQuestion" width="18" height="18" viewBox="0 0 18 18"><path d="m4 15-3 3V4c0-1.1.9-2 2-2h12c1.09 0 2 .91 2 2v9c0 1.09-.91 2-2 2H4Zm7.75-3.97c.72-.83.98-1.86.98-2.94 0-1.65-.7-3.22-2.3-3.83a4.41 4.41 0 0 0-3.02 0 3.8 3.8 0 0 0-2.32 3.83c0 1.29.35 2.29 1.03 3a3.8 3.8 0 0 0 2.85 1.07c.62 0 1.2-.11 1.71-.34.65.44 1 .68 1.06.7.23.13.46.23.7.3l.59-1.13a5.2 5.2 0 0 1-1.28-.66Zm-1.27-.9a5.4 5.4 0 0 0-1.5-.8l-.45.9c.33.12.66.29.98.5-.2.07-.42.11-.65.11-.61 0-1.12-.23-1.52-.68-.86-1-.86-3.12 0-4.11.8-.9 2.35-.9 3.15 0 .9 1.01.86 3.03-.01 4.08Z"/></svg> <span class="-link--channel-name pl6">Questions</span>
</div>
</a>
</li>
<li class="ps-relative" aria-current="false">
<a
href="/tags"
class="s-block-link pl8 js-gps-track nav-links--link -link__with-icon"
data-gps-track="top_nav.click({is_current: false, location:2, destination:2, has_activity_notification:False})"
aria-controls="" data-controller="" data-s-popover-placement="right"
aria-current="false"
data-s-popover-auto-show="true" data-s-popover-hide-on-outside-click="never"
>
<div class="d-flex ai-center">
<svg aria-hidden="true" class="svg-icon iconTags" width="18" height="18" viewBox="0 0 18 18"><path d="M9.24 1a3 3 0 0 0-2.12.88l-5.7 5.7a2 2 0 0 0-.38 2.31 3 3 0 0 1 .67-1.01l6-6A3 3 0 0 1 9.83 2H14a3 3 0 0 1 .79.1A2 2 0 0 0 13 1H9.24Z" opacity=".4"/><path d="M9.83 3a2 2 0 0 0-1.42.59l-6 6a2 2 0 0 0 0 2.82L6.6 16.6a2 2 0 0 0 2.82 0l6-6A2 2 0 0 0 16 9.17V5a2 2 0 0 0-2-2H9.83ZM12 9a2 2 0 1 1 0-4 2 2 0 0 1 0 4Z"/></svg> <span class="-link--channel-name pl6">Tags</span>
</div>
</a>
</li>
<li class="pb24"></li>
<li class="ps-relative" aria-current="false">
<a id="nav-users"
href="/users"
class="s-block-link pl8 js-gps-track nav-links--link -link__with-icon"
data-gps-track="top_nav.click({is_current: false, location:2, destination:3, has_activity_notification:False})"
aria-controls="" data-controller="" data-s-popover-placement="right"
aria-current="false"
data-s-popover-auto-show="true" data-s-popover-hide-on-outside-click="never"
>
<div class="d-flex ai-center">
<svg aria-hidden="true" class="svg-icon iconPeople" width="18" height="18" viewBox="0 0 18 18"><path d="M17 14c0 .44-.45 1-1 1H9a1 1 0 0 1-1-1H2c-.54 0-1-.56-1-1 0-2.63 3-4 3-4s.23-.4 0-1c-.84-.62-1.06-.59-1-3 .06-2.42 1.37-3 2.5-3s2.44.58 2.5 3c.06 2.41-.16 2.38-1 3-.23.59 0 1 0 1s1.55.71 2.42 2.09c.78-.72 1.58-1.1 1.58-1.1s.23-.4 0-1c-.84-.61-1.06-.58-1-3 .06-2.41 1.37-3 2.5-3s2.44.59 2.5 3c.05 2.42-.16 2.39-1 3-.23.6 0 1 0 1s3 1.38 3 4Z"/></svg> <span class="-link--channel-name pl6">Users</span>
</div>
</a>
</li>
<li class="ps-relative" aria-current="false">
<a id="nav-companies"
href="https://stackoverflow.com/jobs/companies?so_medium=stackoverflow&amp;so_source=SiteNav"
class="s-block-link pl8 js-gps-track nav-links--link -link__with-icon"
data-gps-track="top_nav.click({is_current: false, location:2, destination:12, has_activity_notification:False})"
aria-controls="" data-controller="" data-s-popover-placement="right"
aria-current="false"
data-s-popover-auto-show="true" data-s-popover-hide-on-outside-click="never"
>
<div class="d-flex ai-center">
<svg aria-hidden="true" class="svg-icon iconBriefcase" width="18" height="18" viewBox="0 0 18 18"><path d="M5 4a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1v1h1a2 2 0 0 1 2 2v6a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V7c0-1.1.9-2 2-2h1V4Zm7 0H6v1h6V4Z"/></svg> <span class="-link--channel-name pl6">Companies</span>
</div>
</a>
</li>
<li class="ml8 mt32 mb8">
<a href="javascript:void(0)"
class="s-link s-link d-flex fl-grow1 fc-black-400 h:fc-black-600 fs-fine"
role="button"
aria-controls="popover-labs-left-nav"
data-controller="s-popover"
data-action="s-popover#toggle"
data-s-popover-placement="top"
data-s-popover-toggle-class="is-selected"
>
<div class="flex--item fl-grow1 tt-uppercase fc-black-600 fw-bold">Labs</div>
<div class="flex--item px12">
<svg aria-hidden="true" class="svg-icon iconInfoSm" width="14" height="14" viewBox="0 0 14 14"><path d="M7 1a6 6 0 1 1 0 12A6 6 0 0 1 7 1Zm1 10V6H6v5h2Zm0-6V3H6v2h2Z"/></svg>
</div>
</a>
</li>
<li class="ps-relative" aria-current="false">
<a id="nav-labs-discussions"
href="/beta/discussions"
class="s-block-link pl8 ai-center js-gps-track nav-links--link -link__with-icon"
data-gps-track="top_nav.click({is_current: false, location:2, destination:24, has_activity_notification:False})"
aria-controls="" data-controller="" data-s-popover-placement="right"
aria-current="false"
data-s-popover-auto-show="true" data-s-popover-hide-on-outside-click="never"
>
<div class="d-flex ai-center">
<svg aria-hidden="true" class="w16 svg-icon iconMessage" width="18" height="18" viewBox="0 0 18 18"><path d="M5 7a1 1 0 0 1 1-1h6a1 1 0 1 1 0 2H6a1 1 0 0 1-1-1Zm1 2a1 1 0 1 0 0 2h4a1 1 0 1 0 0-2H6Zm-5 9V4c0-1.1.9-2 2-2h12c1.09 0 2 .91 2 2v9c0 1.09-.91 2-2 2H4.5L1 18Zm2.76-5h11.23a.06.06 0 0 0 0-.01H15V4a.06.06 0 0 0-.01-.01H3v9.65l.76-.65Z"/></svg> <span class="-link--channel-name pl6">Discussions</span>
<div class="ps-absolute flex--item r2 mx4 ml-auto">
<div class="bar-sm bg-purple-100 fc-purple-400 fs-fine fw-bold px4 py2 lh-unset tt-uppercase">New</div>
</div>
</div>
</a>
</li>
<li class="ml8 mt32 mb8">
<div class="d-flex jc-space-between ai-center">
<a
class="s-link d-flex fl-grow1 fc-black-400 h:fc-black-600 fs-fine js-collectives-navcta-toggle"
href="javascript:void(0)"
role="button"
aria-controls="popover-discover-collectives"
data-controller="s-popover"
data-action="s-popover#toggle"
data-s-popover-placement="top"
data-s-popover-toggle-class="is-selected"
data-gps-track="top_nav.click({is_current:false, location:2, destination:17})"
>
<div class="flex--item fl-grow1 tt-uppercase fc-black-600 fw-bold">Collectives</div>
<div class="flex--item px12">
<svg aria-hidden="true" class="svg-icon iconPlusSm" width="14" height="14" viewBox="0 0 14 14"><path d="M8 2H6v4H2v2h4v4h2V8h4V6H8V2Z"/></svg> </div>
</a>
</div>
</li>
<li class="ps-relative" aria-current="false">
<a id="nav-collective-discover"
href="/collectives"
class="s-block-link pl8 ai-center js-collectives-navcta-toggle js-gps-track nav-links--link -link__with-icon"
data-gps-track="top_nav.click({is_current: false, location:2, destination:18, has_activity_notification:False})"
aria-controls="" data-controller="" data-s-popover-placement="right"
aria-current="false"
data-s-popover-auto-show="true" data-s-popover-hide-on-outside-click="never"
>
<div class="d-flex ai-center">
<svg aria-hidden="true" class="mt-auto fc-orange-400 svg-icon iconStarVerified" width="18" height="18" viewBox="0 0 18 18"><path d="M9.86.89a1.14 1.14 0 0 0-1.72 0l-.5.58c-.3.35-.79.48-1.23.33l-.72-.25a1.14 1.14 0 0 0-1.49.85l-.14.76c-.1.45-.45.8-.9.9l-.76.14c-.67.14-1.08.83-.85 1.49l.25.72c.15.44.02.92-.33 1.23l-.58.5a1.14 1.14 0 0 0 0 1.72l.58.5c.35.3.48.79.33 1.23l-.25.72c-.23.66.18 1.35.85 1.49l.76.14c.45.1.8.45.9.9l.14.76c.14.67.83 1.08 1.49.85l.72-.25c.44-.15.92-.02 1.23.33l.5.58c.46.52 1.26.52 1.72 0l.5-.58c.3-.35.79-.48 1.23-.33l.72.25c.66.23 1.35-.18 1.49-.85l.14-.76c.1-.45.45-.8.9-.9l.76-.14c.67-.14 1.08-.83.85-1.49l-.25-.72c-.15-.44-.02-.92.33-1.23l.58-.5c.52-.46.52-1.26 0-1.72l-.58-.5c-.35-.3-.48-.79-.33-1.23l.25-.72a1.14 1.14 0 0 0-.85-1.49l-.76-.14c-.45-.1-.8-.45-.9-.9l-.14-.76a1.14 1.14 0 0 0-1.49-.85l-.72.25c-.44.15-.92.02-1.23-.33l-.5-.58Zm-.49 2.67L10.6 6.6c.05.15.19.24.34.25l3.26.22c.36.03.5.48.23.71l-2.5 2.1a.4.4 0 0 0-.14.4l.8 3.16a.4.4 0 0 1-.6.44L9.2 12.13a.4.4 0 0 0-.42 0l-2.77 1.74a.4.4 0 0 1-.6-.44l.8-3.16a.4.4 0 0 0-.13-.4l-2.5-2.1a.4.4 0 0 1 .22-.7l3.26-.23a.4.4 0 0 0 .34-.25l1.22-3.03a.4.4 0 0 1 .74 0Z"/></svg> <span class="-link--channel-name pl6">Explore Collectives</span>
</div>
</a>
</li>
</ol>
</li>
<li class="js-freemium-cta ps-relative">
<div class="fs-fine tt-uppercase fc-black-600 fw-bold ml8 mt16 mb8">Teams</div>
<div class="bt bl bb bc-black-200 p12 pb6 fc-black-500 blr-sm overflow-hidden">
<strong class="fc-black-600 mb6">Stack Overflow for Teams</strong>
– Start collaborating and sharing organizational knowledge.
<img class="wmx100 mx-auto my8 h-auto d-block" width="139" height="114" src="https://cdn.sstatic.net/Img/teams/teams-illo-free-sidebar-promo.svg?v=47faa659a05e" alt="">
<a href="https://try.stackoverflow.co/why-teams/?utm_source=so-owned&amp;utm_medium=side-bar&amp;utm_campaign=campaign-38&amp;utm_content=cta"
class="w100 s-btn s-btn__filled s-btn__xs bg-orange-400 js-gps-track"
data-gps-track="teams.create.left-sidenav.click({ Action: 6 })"
data-ga="[&quot;teams left navigation - anonymous&quot;,&quot;left nav free cta&quot;,&quot;stackoverflow.com/teams/create/free&quot;,null,null]">Create a free Team</a>
<a href="https://stackoverflow.co/teams/"
class="w100 s-btn s-btn__muted s-btn__xs js-gps-track"
data-gps-track="teams.create.left-sidenav.click({ Action: 5 })"
data-ga="[&quot;teams left navigation - anonymous&quot;,&quot;left nav free cta&quot;,&quot;stackoverflow.com/teams&quot;,null,null]">Why Teams?</a>
</div>
</li>
<li class="d-flex ai-center jc-space-between ml8 mt32 mb8 js-create-team-cta d-none">
<a href="javascript:void(0)"
class="s-link d-flex fl-grow1 fc-black-400 h:fc-black-600 fs-fine js-gps-track"
role="button"
aria-controls="popover-teams-create-cta"
data-controller="s-popover"
data-action="s-popover#toggle"
data-s-popover-placement="bottom-start"
data-s-popover-toggle-class="is-selected"
data-gps-track="teams.create.left-sidenav.click({ Action: ShowInfo })"
data-ga="[&quot;teams left navigation - anonymous&quot;,&quot;left nav show teams info&quot;,null,null,null]"
>
<div class="flex--item fl-grow1 fc-black-600 fw-bold tt-uppercase">Teams</div>
<div class="flex--item px12">
<svg aria-hidden="true" class="svg-icon iconPlusSm" width="14" height="14" viewBox="0 0 14 14"><path d="M8 2H6v4H2v2h4v4h2V8h4V6H8V2Z"/></svg>
</div>
</a>
</li>
<li class="ps-relative js-create-team-cta d-none">
<a href="https://stackoverflowteams.com/teams/create/free/?utm_source=so-owned&amp;utm_medium=side-bar&amp;utm_campaign=campaign-38&amp;utm_content=cta"
class="s-block-link pl8 js-gps-track nav-links--link"
title="Stack Overflow for Teams is a private, secure spot for your organization's questions and answers."
data-gps-track="teams.create.left-sidenav.click({ Action: FreemiumTeamsCreateClick })"
data-ga="[&quot;teams left navigation - anonymous&quot;,&quot;left nav team click&quot;,&quot;stackoverflow.com/teams/create/free&quot;,null,null]">
<div class="d-flex ai-center">
<div class="flex--item s-avatar va-middle bg-orange-400">
<div class="s-avatar--letter mtn1">
<svg aria-hidden="true" class="svg-icon iconBriefcaseSm" width="14" height="14" viewBox="0 0 14 14"><path d="M4 3a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v1h.5c.83 0 1.5.67 1.5 1.5v5c0 .83-.67 1.5-1.5 1.5h-7A1.5 1.5 0 0 1 2 10.5v-5C2 4.67 2.67 4 3.5 4H4V3Zm5 1V3H5v1h4Z"/></svg>
</div>
<svg aria-hidden="true" class="native s-avatar--badge svg-icon iconShieldXSm" width="9" height="10" viewBox="0 0 9 10"><path fill="var(--white)" d="M0 1.84 4.5 0 9 1.84v3.17C9 7.53 6.3 10 4.5 10 2.7 10 0 7.53 0 5.01V1.84Z"/><path fill="var(--black-400)" d="M1 2.5 4.5 1 8 2.5v2.51C8 7.34 5.34 9 4.5 9 3.65 9 1 7.34 1 5.01V2.5Zm2.98 3.02L3.2 7h2.6l-.78-1.48a.4.4 0 0 1 .15-.38c.34-.24.73-.7.73-1.14 0-.71-.5-1.23-1.41-1.23-.92 0-1.39.52-1.39 1.23 0 .44.4.9.73 1.14.12.08.18.23.15.38Z"/></svg>
</div>
<div class="flex--item pl6">
Create free Team
</div>
</div>
</a>
</li>
</ol>
</nav>
</div>
<div class="s-popover ws2" id="popover-discover-collectives" role="menu">
<div class="s-popover--arrow"></div>
<div>
<svg aria-hidden="true" class="fc-orange-400 float-right ml24 svg-spot spotCollective" width="48" height="48" viewBox="0 0 48 48"><path d="M25.5 7a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5ZM14 18.25c0-.69.56-1.25 1.25-1.25h22.5c.69 0 1.25.56 1.25 1.25V37.5a1 1 0 0 1-1.6.8l-4.07-3.05a1.25 1.25 0 0 0-.75-.25H15.25c-.69 0-1.25-.56-1.25-1.25v-15.5ZM7 24.5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0ZM25.5 48a2.5 2.5 0 1 0 0-5 2.5 2.5 0 0 0 0 5ZM48 24.5a2.5 2.5 0 1 1-5 0 2.5 2.5 0 0 1 5 0Z" opacity=".2"/><path d="M21 3.5a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0ZM24.5 2a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3ZM0 23.5a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0ZM3.5 22a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3ZM21 44.5a3.5 3.5 0 1 1 7 0 3.5 3.5 0 0 1-7 0Zm3.5-1.5a1.5 1.5 0 1 0 0 3 1.5 1.5 0 0 0 0-3Zm20-23a3.5 3.5 0 1 0 0 7 3.5 3.5 0 0 0 0-7ZM43 23.5a1.5 1.5 0 1 1 3 0 1.5 1.5 0 0 1-3 0Zm-23.23-3.14a1 1 0 0 1-.13 1.4l-2.08 1.74 2.08 1.73a1 1 0 1 1-1.28 1.54l-2.42-2.02a1.63 1.63 0 0 1 0-2.5l2.42-2.02a1 1 0 0 1 1.4.13Zm7.59 1.41a1 1 0 1 1 1.28-1.54l2.42 2.02c.78.65.78 1.85 0 2.5l-2.42 2.02a1 1 0 1 1-1.28-1.54l2.08-1.73-2.08-1.73ZM24.12 18a1 1 0 0 1 .87 1.12l-1 8a1 1 0 1 1-1.98-.24l1-8a1 1 0 0 1 1.11-.87Zm-11.87-5C11.01 13 10 14 10 15.25v15.5c0 1.24 1 2.25 2.25 2.25h17.33c.06 0 .11.02.15.05l4.07 3.05a2 2 0 0 0 3.2-1.6V15.25c0-1.24-1-2.25-2.25-2.25h-22.5ZM12 15.25c0-.14.11-.25.25-.25h22.5c.14 0 .25.11.25.25V34.5l-4.07-3.05a2.2 2.2 0 0 0-1.35-.45H12.25a.25.25 0 0 1-.25-.25v-15.5Zm7.24-10.68a1 1 0 1 0-.48-1.94A22.04 22.04 0 0 0 2.91 17.7a1 1 0 1 0 1.92.58 20.04 20.04 0 0 1 14.4-13.72Zm11.05-1.66a1 1 0 0 0-.58 1.92c6.45 1.92 11.54 7 13.46 13.46a1 1 0 1 0 1.92-.58 22.05 22.05 0 0 0-14.8-14.8ZM4.57 28.76a1 1 0 0 0-1.94.48 22.03 22.03 0 0 0 16.13 16.13 1 1 0 1 0 .48-1.94A20.03 20.03 0 0 1 4.57 28.76Zm40.8.48a1 1 0 1 0-1.94-.48 20.04 20.04 0 0 1-13.72 14.41 1 1 0 0 0 .58 1.92 22.04 22.04 0 0 0 15.08-15.85Z"/></svg>
<h5 class="pt4 fw-bold">Collectives™ on Stack Overflow</h5>
<p class="my16 fs-caption fc-black-500">Find centralized, trusted content and collaborate around the technologies you use most.</p>
<a href="/collectives"
class="js-gps-track s-btn s-btn__filled s-btn__xs"
data-gps-track="top_nav.click({is_current:false, location:2, destination:18})">
Learn more about Collectives
</a>
</div>
</div>
<div class="s-popover ws2"
id="popover-teams-create-cta"
role="menu"
aria-hidden="true">
<div class="s-popover--arrow"></div>
<div class="ps-relative overflow-hidden">
<p class="mb2"><strong>Teams</strong></p>
<p class="mb12 fs-caption fc-black-400">Q&amp;A for work</p>
<p class="mb12 fs-caption fc-black-500">Connect and share knowledge within a single location that is structured and easy to search.</p>
<a href="https://stackoverflow.co/teams/"
class="js-gps-track s-btn s-btn__filled s-btn__xs"
data-gps-track="teams.create.left-sidenav.click({ Action: CtaClick })"
data-ga="[&quot;teams left navigation - anonymous&quot;,&quot;left nav cta&quot;,&quot;stackoverflow.com/teams&quot;,null,null]">
Learn more about Teams
</a>
</div>
<div class="ps-absolute t8 r8">
<svg aria-hidden="true" class="fc-orange-400 svg-spot spotPeople" width="48" height="48" viewBox="0 0 48 48"><path d="M13.5 28a4.5 4.5 0 1 0 0-9 4.5 4.5 0 0 0 0 9ZM7 30a1 1 0 0 1 1-1h11a1 1 0 0 1 1 1v5h11v-5a1 1 0 0 1 1-1h12a1 1 0 0 1 1 1v10a2 2 0 0 1-2 2H33v5a1 1 0 0 1-1 1H20a1 1 0 0 1-1-1v-5H8a1 1 0 0 1-1-1V30Zm25-6.5a4.5 4.5 0 1 0 9 0 4.5 4.5 0 0 0-9 0ZM24.5 34a4.5 4.5 0 1 0 0-9 4.5 4.5 0 0 0 0 9Z" opacity=".2"/><path d="M16.4 26.08A6 6 0 1 0 7.53 26C5.64 26.06 4 27.52 4 29.45V40a1 1 0 0 0 1 1h9a1 1 0 1 0 0-2h-4v-7a1 1 0 1 0-2 0v7H6v-9.55c0-.73.67-1.45 1.64-1.45H16a1 1 0 0 0 .4-1.92ZM12 18a4 4 0 1 1 0 8 4 4 0 0 1 0-8Zm16.47 14a6 6 0 1 0-8.94 0A3.6 3.6 0 0 0 16 35.5V46a1 1 0 0 0 1 1h14a1 1 0 0 0 1-1V35.5c0-1.94-1.64-3.42-3.53-3.5ZM20 28a4 4 0 1 1 8 0 4 4 0 0 1-8 0Zm-.3 6h8.6c1 0 1.7.75 1.7 1.5V45h-2v-7a1 1 0 1 0-2 0v7h-4v-7a1 1 0 1 0-2 0v7h-2v-9.5c0-.75.7-1.5 1.7-1.5ZM42 22c0 1.54-.58 2.94-1.53 4A3.5 3.5 0 0 1 44 29.45V40a1 1 0 0 1-1 1h-9a1 1 0 1 1 0-2h4v-7a1 1 0 1 1 2 0v7h2v-9.55A1.5 1.5 0 0 0 40.48 28H32a1 1 0 0 1-.4-1.92A6 6 0 1 1 42 22Zm-2 0a4 4 0 1 0-8 0 4 4 0 0 0 8 0Z"/><g opacity=".35"><path d="M17 10a1 1 0 011-1h12a1 1 0 110 2H18a1 1 0 01-1-1Zm1-5a1 1 0 100 2h12a1 1 0 100-2H18ZM14 1a1 1 0 00-1 1v12a1 1 0 001 1h5.09l4.2 4.2a1 1 0 001.46-.04l3.7-4.16H34a1 1 0 001-1V2a1 1 0 00-1-1H14Zm1 12V3h18v10h-5a1 1 0 00-.75.34l-3.3 3.7-3.74-3.75a1 1 0 00-.71-.29H15Z"/></g></svg>
</div>
</div>
<div class="s-popover ws2"
id="popover-labs-left-nav"
role="menu"
aria-hidden="true">
<div class="s-popover--arrow"></div>
<svg aria-hidden="true" class="fc-black-600 mb8 svg-icon iconLabs" width="42" height="18"><path d="M11.5 13.624a.374.374 0 0 1-.37.376H5.361a.374.374 0 0 1-.37-.376V4.376c0-.207.165-.376.37-.376H6.62c.204 0 .37.169.37.376v7.611h4.138c.205 0 .371.169.371.377v1.26zm9.432.215c-.07.1-.185.161-.308.161H19.13a.376.376 0 0 1-.356-.254l-.55-1.7h-3.111l-.55 1.7a.377.377 0 0 1-.355.254h-1.494a.376.376 0 0 1-.353-.506l3.39-9.247A.376.376 0 0 1 16.103 4h1.13c.158 0 .299.099.353.247l3.39 9.247a.376.376 0 0 1-.045.345zm-4.157-7.386l-1.219 3.531h2.266l-1.047-3.53zm13.335 5.71a.37.37 0 0 0-.003.524c.956.971 2.047 1.313 3.486 1.313 1.014 0 1.92-.265 2.582-.788.67-.53 1.063-1.306 1.063-2.255 0-.855-.268-1.622-.867-2.145-.456-.41-1.008-.633-1.89-.767l-1.037-.153c-.377-.057-.672-.19-.832-.332-.146-.132-.221-.315-.221-.568 0-.309.11-.56.306-.737.199-.179.518-.312.986-.312.708 0 1.254.151 1.726.601a.37.37 0 0 0 .516-.004l.883-.87a.37.37 0 0 0-.008-.534C35.942 4.334 35.004 4 33.721 4c-1.016 0-1.872.292-2.479.836-.61.548-.935 1.32-.935 2.207 0 .82.243 1.502.781 2.01h.001c.468.437 1.135.716 1.93.826l1.072.153c.508.073.647.147.795.286l.008.007c.14.125.234.34.234.67 0 .332-.124.567-.344.73-.235.174-.617.293-1.165.293-.867 0-1.49-.185-2.066-.76a.37.37 0 0 0-.522-.003l-.92.908zM22.37 14a.374.374 0 0 1-.37-.376V4.376c0-.207.166-.376.37-.376h3.543c.913 0 1.697.264 2.257.78.564.519.863 1.259.863 2.129 0 .845-.377 1.524-.87 1.947.57.433 1.01 1.145 1.01 2.157 0 .941-.317 1.702-.894 2.224-.57.517-1.354.763-2.225.763H22.37zm3.543-1.977c.96 0 .959-1.01.959-1.01s0-1.013-.959-1.013H24v2.023h1.913zm-.115-4.063c1.074 0 1.074-1.015 1.074-1.015s0-1.016-1.074-1.016H24V7.96h1.798z" fill="var(--black-600)"/><path d="M0 4v10a4 4 0 0 0 4 4h34a4 4 0 0 0 4-4V4a4 4 0 0 0-4-4H4a4 4 0 0 0-4 4zm4-2h34a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2z" fill="var(--black-600)"/></svg>
<p class="fs-caption">Get early access and see previews of new features.</p>
<a class="s-btn s-btn__filled s-btn__xs s-btn__icon fs-fine" href="https://stackoverflow.co/labs/"><svg aria-hidden="true" class="svg-icon iconShareSm" width="14" height="14" viewBox="0 0 14 14"><path d="M5 1H3a2 2 0 0 0-2 2v8c0 1.1.9 2 2 2h8a2 2 0 0 0 2-2V9h-2v2H3V3h2V1Zm2 0h6v6h-2V4.5L6.5 9 5 7.5 9.5 3H7V1Z"/></svg> Learn more about Labs</a>
</div>
</div>
<div id="content" class="snippet-hidden">
<div itemprop="mainEntity" itemscope itemtype="https://schema.org/Question">
<link itemprop="image" href="https://cdn.sstatic.net/Sites/stackoverflow/Img/apple-touch-icon.png?v=c78bd457575a">
<div class="inner-content clearfix">
<div id="signup-modal-container"></div>
<script type="application/json" data-role="module-args" data-module-name="islands/signup-modal/index.mod">{"ContainerElementId":"signup-modal-container","FKey":"27b7033a38c9489b51a2db328ed82e00b602b223db5e55f48328eb2bf4b6fccf","TriggerEvent":"signupButtonClick","Modal":"Legacy"}</script><script defer src="https://cdn.sstatic.net/Js/webpack-chunks/71.en.js?v=7959a298059a"></script><script defer src="https://cdn.sstatic.net/Js/webpack-chunks/8427.en.js?v=46a04e4e6f05"></script><script defer src="https://cdn.sstatic.net/Js/webpack-chunks/9755.en.js?v=57dd3f3ad2ba"></script><script defer src="https://cdn.sstatic.net/Js/webpack-chunks/7105.en.js?v=3a1413a1c533"></script><script defer src="https://cdn.sstatic.net/Js/webpack-chunks/8825.en.js?v=bcbc3c7b3d37"></script><script defer src="https://cdn.sstatic.net/Js/webpack-chunks/4869.en.js?v=30a0f12e1246"></script><script defer src="https://cdn.sstatic.net/Js/islands/signup-modal.en.js?v=93e68271a6c9"></script>
<div id="question-header" class="d-flex sm:fd-column">
<h1 itemprop="name" class="fs-headline1 ow-break-word mb8 flex--item fl1"><a href="/questions/16778667/how-to-use-sed-to-find-and-replace-url-strings-with-the-character-in-the-tar" class="question-hyperlink">How to use SED to find and replace URL strings with the &quot;/&quot; character in the targeted strings? [duplicate]</a></h1>
<div class="ml12 aside-cta flex--item print:d-none sm:ml0 sm:mb12 sm:order-first sm:as-end">
<a href="/questions/ask" class="ws-nowrap s-btn s-btn__filled">
Ask Question
</a>
</div>
</div>
<div class="d-flex fw-wrap pb8 mb16 bb bc-black-200">
<div class="flex--item ws-nowrap mr16 mb8" title="2013-05-27 18:28:34Z">
<span class="fc-black-400 mr2">Asked</span>
<time itemprop="dateCreated" datetime="2013-05-27T18:28:34">10 years, 9 months ago</time>
</div>
<div class="flex--item ws-nowrap mr16 mb8">
<span class="fc-black-400 mr2">Modified</span>
<a href="?lastactivity" class="s-link s-link__inherit" title="2013-05-27 18:43:29Z">10 years, 9 months ago</a>
</div>
<div class="flex--item ws-nowrap mb8" title="Viewed 106,586 times">
<span class="fc-black-400 mr2">Viewed</span>
107k times
</div>
</div>
<div id="mainbar" role="main" aria-label="question and answers">
<div class="question js-question" data-questionid="16778667" data-position-on-page="0" data-score="80" id="question">
<style>
</style>
<div class="js-zone-container zone-container-main">
<div id="dfp-tlb" class="everyonelovesstackoverflow everyoneloves__top-leaderboard everyoneloves__leaderboard"></div>
<div class="js-report-ad-button-container " style="width: 728px"></div>
</div>
<div class="post-layout ">
<div class="votecell post-layout--left">
<div class="js-voting-container d-flex jc-center fd-column ai-stretch gs4 fc-black-300" data-post-id="16778667" data-referrer="None">
<button class="js-vote-up-btn flex--item s-btn ba bar-pill c-pointer as-center bc-black-225 fc-black-500 h:bg-theme-primary-200 h:fc-black-500 f:fc-black-050"
data-controller="s-tooltip"
data-s-tooltip-placement="right"
title="This question shows research effort; it is useful and clear"
aria-pressed="false"
aria-label="Up vote"
data-selected-classes="fc-theme-primary bc-theme-primary bg-theme-primary-100"
data-unselected-classes="bc-black-225 fc-black-500 h:bg-theme-primary-200 h:fc-black-500 f:fc-black-050">
<svg aria-hidden="true" class="svg-icon iconArrowUp" width="18" height="18" viewBox="0 0 18 18"><path d="M1 12h16L9 4l-8 8Z"/></svg>
</button>
<div class="js-vote-count flex--item d-flex fd-column ai-center fc-theme-body-font fw-bold fs-subheading py4"
itemprop="upvoteCount"
data-value="80">
80
</div>
<button class="js-vote-down-btn flex--item mb8 s-btn ba bar-pill c-pointer as-center bc-black-225 fc-black-500 h:bg-theme-primary-200 h:fc-black-500 f:fc-black-050"
data-controller="s-tooltip"
data-s-tooltip-placement="right"
title="This question does not show any research effort; it is unclear or not useful"
aria-pressed="false"
aria-label="Down vote"
data-selected-classes="fc-theme-primary bc-theme-primary bg-theme-primary-100"
data-unselected-classes="bc-black-225 fc-black-500 h:bg-theme-primary-200 h:fc-black-500 f:fc-black-050">
<svg aria-hidden="true" class="svg-icon iconArrowDown" width="18" height="18" viewBox="0 0 18 18"><path d="M1 6h16l-8 8-8-8Z"/></svg>
</button>
<button class="js-saves-btn s-btn s-btn__unset c-pointer py4"
type="button"
id="saves-btn-16778667"
data-controller="s-tooltip"
data-s-tooltip-placement="right"
data-s-popover-placement=""
title="Save this question."
aria-pressed="false"
data-post-id="16778667"
data-post-type-id="1"
data-user-privilege-for-post-click="0"
aria-controls=""
data-s-popover-auto-show="false"
>
<svg aria-hidden="true" class="fc-theme-primary-400 js-saves-btn-selected d-none svg-icon iconBookmark" width="18" height="18" viewBox="0 0 18 18"><path d="M3 17V3c0-1.1.9-2 2-2h8a2 2 0 0 1 2 2v14l-6-4-6 4Z"/></svg>
<svg aria-hidden="true" class="js-saves-btn-unselected svg-icon iconBookmarkAlt" width="18" height="18" viewBox="0 0 18 18"><path d="m9 10.6 4 2.66V3H5v10.26l4-2.66ZM3 17V3c0-1.1.9-2 2-2h8a2 2 0 0 1 2 2v14l-6-4-6 4Z"/></svg>
</button>
<a class="js-post-issue flex--item s-btn s-btn__unset c-pointer py6 mx-auto" href="/posts/16778667/timeline" data-shortcut="T" data-ks-title="timeline" data-controller="s-tooltip" data-s-tooltip-placement="right" title="Show activity on this post." aria-label="Timeline"><svg aria-hidden="true" class="mln2 mr0 svg-icon iconHistory" width="19" height="18" viewBox="0 0 19 18"><path d="M3 9a8 8 0 1 1 3.73 6.77L8.2 14.3A6 6 0 1 0 5 9l3.01-.01-4 4-4-4h3L3 9Zm7-4h1.01L11 9.36l3.22 2.1-.6.93L10 10V5Z"/></svg></a>
</div>
</div>
<div class="postcell post-layout--right">
<div class="s-prose js-post-body" itemprop="text">
<div>
<aside class="s-notice s-notice__info post-notice js-post-notice mb16" role="status">
<div class="d-flex fd-column fw-nowrap">
<div class="d-flex fw-nowrap">
<div class="flex--item wmn0 fl1 lh-lg">
<div class="flex--item fl1 lh-lg">
<div>
<b>This question already has answers here</b>:
</div>
</div>
</div>
</div>
<div class="flex--item mb0 mt4">
<a href="/questions/14687725/trying-to-escape-a-for-sed-on-ubuntu" dir="ltr">Trying to escape a / for sed on ubuntu</a>
<span class="question-originals-answer-count">
(4 answers)
</span>
</div>
<div class="flex--item mb0 mt8">Closed <span title='2013-05-28 00:49:49Z' class='relativetime'>10 years ago</span>.</div>
</div>
</aside>
</div>
<p>I'm attempting to use SED through OS X Terminal to perform a find and replace.</p>
<p>Imagine I have this string littered throughout the text file: <a href="http://www.find.com/page" rel="noreferrer">http://www.find.com/page</a></p>
<p>And I want to replace it with this string: <a href="http://www.replace.com/page" rel="noreferrer">http://www.replace.com/page</a></p>
<p>I'm having trouble because I'm not sure how to properly escape or use the "/" character in my strings. For example if I simply wanted to find "cat" and replace with "dog" I've found the following command that works perfectly:</p>
<pre><code>sed -i '' 's/cat/dog/g' file.txt
</code></pre>
<p>Does anyone have any ideas on how to achieve the same functionality only instead of cat and dog have strings or URLs that container the "/" character? I tried many different ways of escaping the "/" characters but then it seems as if SED can no longer "find" the string and it doesn't perform any find &amp; replace actions.</p>
<p>Any help or tips are greatly appreciated.</p>
<p>Thanks!</p>
</div>
<div class="mt24 mb12">
<div class="post-taglist d-flex gs4 gsy fd-column">
<div class="d-flex ps-relative fw-wrap">
<ul class='ml0 list-ls-none js-post-tag-list-wrapper d-inline'><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/bash" class="post-tag" title="show questions tagged &#39;bash&#39;" aria-label="show questions tagged &#39;bash&#39;" rel="tag" aria-labelledby="tag-bash-tooltip-container">bash</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/sed" class="post-tag" title="show questions tagged &#39;sed&#39;" aria-label="show questions tagged &#39;sed&#39;" rel="tag" aria-labelledby="tag-sed-tooltip-container">sed</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/escaping" class="post-tag" title="show questions tagged &#39;escaping&#39;" aria-label="show questions tagged &#39;escaping&#39;" rel="tag" aria-labelledby="tag-escaping-tooltip-container">escaping</a></li></ul>
</div>
</div>
</div>
<div class="mb0 ">
<div class="mt16 d-flex gs8 gsy fw-wrap jc-end ai-start pt4 mb16">
<div class="flex--item mr16 fl1 w96">
<div class="js-post-menu pt2" data-post-id="16778667" data-post-type-id="1">
<div class="d-flex gs8 s-anchors s-anchors__muted fw-wrap">
<div class="flex--item">
<a href="/q/16778667"
rel="nofollow"
itemprop="url"
class="js-share-link js-gps-track"
title="Short permalink to this question"
data-gps-track="post.click({ item: 2, priv: 0, post_type: 1 })"
data-controller="se-share-sheet"
data-se-share-sheet-title="Share a link to this question"
data-se-share-sheet-subtitle=""
data-se-share-sheet-post-type="question"
data-se-share-sheet-social="facebook twitter devto"
data-se-share-sheet-location="1"
data-se-share-sheet-license-url="https%3a%2f%2fcreativecommons.org%2flicenses%2fby-sa%2f3.0%2f"
data-se-share-sheet-license-name="CC BY-SA 3.0"
data-s-popover-placement="bottom-start">Share</a>
</div>
<div class="flex--item">
<a href="/posts/16778667/edit" class="js-suggest-edit-post js-gps-track" data-gps-track="post.click({ item: 6, priv: 0, post_type: 1 })" title="">Improve this question</a>
</div>
<div class="flex--item">
<button type="button"
id="btnFollowPost-16778667" class="s-btn s-btn__link js-follow-post js-follow-question js-gps-track"
data-gps-track="post.click({ item: 14, priv: 0, post_type: 1 })"
data-controller="s-tooltip " data-s-tooltip-placement="bottom"
data-s-popover-placement="bottom" aria-controls=""
title="Follow this question to receive notifications">
Follow
</button>
</div>
</div>
<div class="js-menu-popup-container"></div>
</div>
</div>
<div class="post-signature owner flex--item">
<div class="user-info ">
<div class="d-flex ">
<div class="user-action-time fl-grow1">
asked <span title='2013-05-27 18:28:34Z' class='relativetime'>May 27, 2013 at 18:28</span>
</div>
</div>
<div class="user-gravatar32">
<a href="/users/455810/learnwebcode"><div class="gravatar-wrapper-32"><img src="https://i.stack.imgur.com/dxhmA.png?s=64&amp;g=1" alt="LearnWebCode&#39;s user avatar" width="32" height="32" class="bar-sm"></div></a>
</div>
<div class="user-details" itemprop="author" itemscope itemtype="http://schema.org/Person">
<a href="/users/455810/learnwebcode">LearnWebCode</a><span class="d-none" itemprop="name">LearnWebCode</span>
<div class="-flair">
<span class="reputation-score" title="reputation score " dir="ltr">1,371</span><span title="3 gold badges" aria-hidden="true"><span class="badge1"></span><span class="badgecount">3</span></span><span class="v-visible-sr">3 gold badges</span><span title="12 silver badges" aria-hidden="true"><span class="badge2"></span><span class="badgecount">12</span></span><span class="v-visible-sr">12 silver badges</span><span title="22 bronze badges" aria-hidden="true"><span class="badge3"></span><span class="badgecount">22</span></span><span class="v-visible-sr">22 bronze badges</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<span class="d-none" itemprop="commentCount">0</span>
<div class="post-layout--right js-post-comments-component">
<div id="comments-16778667" class="comments js-comments-container bt bc-black-200 mt12 dno" data-post-id="16778667" data-min-length="15">
<ul class="comments-list js-comments-list"
data-remaining-comments-count="0"
data-canpost="false"
data-cansee="true"
data-comments-unavailable="false"
data-addlink-disabled="true">
</ul>
</div>
<div id="comments-link-16778667" data-rep=50 data-anon=true>
<a class="js-add-link comments-link disabled-link" title="Use comments to ask for more information or suggest improvements. Avoid answering questions in comments." href="#" role="button">Add a comment</a>
<span class="js-link-separator dno">&nbsp;|&nbsp;</span>
<a class="js-show-link comments-link dno" title="Expand to show all comments on this post" href=# onclick="" role="button"></a>
</div>
</div>
</div>
</div>
<div class="js-zone-container zone-container-responsive">
<div id="dfp-isb" class="everyonelovesstackoverflow everyoneloves__inline-sidebar mx-auto"></div>
<div class="js-report-ad-button-container mx-auto" style="width: 300px"></div>
</div>
<div id="answers">
<a name="tab-top"></a>
<div id="answers-header">
<div class="answers-subheader d-flex ai-center mb8">
<div class="flex--item fl1">
<h2 class="mb0" data-answercount="2">
2 Answers
<span style="display:none;" itemprop="answerCount">2</span>
</h2>
</div>
<div class="flex--item">
<div class="d-flex g4 gsx ai-center sm:fd-column sm:ai-start">
<div class="d-flex fd-column ai-end sm:ai-start">
<label class="flex--item fs-caption" for="answer-sort-dropdown-select-menu">
Sorted by:
</label>
<a
class="js-sort-preference-change s-link flex--item fs-fine d-none"
data-value="ScoreDesc"
href="/questions/16778667/how-to-use-sed-to-find-and-replace-url-strings-with-the-character-in-the-tar?answertab=scoredesc#tab-top"
>
Reset to default
</a>
</div>
<div class="flex--item s-select">
<select id="answer-sort-dropdown-select-menu">
<option
value=scoredesc
selected=selected
>
Highest score (default)
</option>
<option
value=trending
>
Trending (recent votes count more)
</option>
<option
value=modifieddesc
>
Date modified (newest first)
</option>
<option
value=createdasc
>
Date created (oldest first)
</option>
</select>
</div>
</div>
</div>
</div>
</div>
<a name="16778711"></a>
<div id="answer-16778711" class="answer js-answer accepted-answer js-accepted-answer" data-answerid="16778711" data-parentid="16778667" data-score="227" data-position-on-page="1" data-highest-scored="1" data-question-has-accepted-highest-score="1" itemprop="acceptedAnswer" itemscope itemtype="https://schema.org/Answer">
<div class="post-layout">
<div class="votecell post-layout--left">
<div class="js-voting-container d-flex jc-center fd-column ai-stretch gs4 fc-black-300" data-post-id="16778711" data-referrer="None">
<button class="js-vote-up-btn flex--item s-btn ba bar-pill c-pointer as-center bc-black-225 fc-black-500 h:bg-theme-primary-200 h:fc-black-500 f:fc-black-050"
data-controller="s-tooltip"
data-s-tooltip-placement="right"
title="This answer is useful"
aria-pressed="false"
aria-label="Up vote"
data-selected-classes="fc-theme-primary bc-theme-primary bg-theme-primary-100"
data-unselected-classes="bc-black-225 fc-black-500 h:bg-theme-primary-200 h:fc-black-500 f:fc-black-050">
<svg aria-hidden="true" class="svg-icon iconArrowUp" width="18" height="18" viewBox="0 0 18 18"><path d="M1 12h16L9 4l-8 8Z"/></svg>
</button>
<div class="js-vote-count flex--item d-flex fd-column ai-center fc-theme-body-font fw-bold fs-subheading py4"
itemprop="upvoteCount"
data-value="227">
227
</div>
<button class="js-vote-down-btn flex--item mb8 s-btn ba bar-pill c-pointer as-center bc-black-225 fc-black-500 h:bg-theme-primary-200 h:fc-black-500 f:fc-black-050"
data-controller="s-tooltip"
data-s-tooltip-placement="right"
title="This answer is not useful"
aria-pressed="false"
aria-label="Down vote"
data-selected-classes="fc-theme-primary bc-theme-primary bg-theme-primary-100"
data-unselected-classes="bc-black-225 fc-black-500 h:bg-theme-primary-200 h:fc-black-500 f:fc-black-050">
<svg aria-hidden="true" class="svg-icon iconArrowDown" width="18" height="18" viewBox="0 0 18 18"><path d="M1 6h16l-8 8-8-8Z"/></svg>
</button>
<button class="js-saves-btn s-btn s-btn__unset c-pointer py4"
type="button"
id="saves-btn-16778711"
data-controller="s-tooltip"
data-s-tooltip-placement="right"
data-s-popover-placement=""
title="Save this answer."
aria-pressed="false"
data-post-id="16778711"
data-post-type-id="2"
data-user-privilege-for-post-click="0"
aria-controls=""
data-s-popover-auto-show="false"
>
<svg aria-hidden="true" class="fc-theme-primary-400 js-saves-btn-selected d-none svg-icon iconBookmark" width="18" height="18" viewBox="0 0 18 18"><path d="M3 17V3c0-1.1.9-2 2-2h8a2 2 0 0 1 2 2v14l-6-4-6 4Z"/></svg>
<svg aria-hidden="true" class="js-saves-btn-unselected svg-icon iconBookmarkAlt" width="18" height="18" viewBox="0 0 18 18"><path d="m9 10.6 4 2.66V3H5v10.26l4-2.66ZM3 17V3c0-1.1.9-2 2-2h8a2 2 0 0 1 2 2v14l-6-4-6 4Z"/></svg>
</button>
<div class="js-accepted-answer-indicator flex--item fc-green-400 py6 mtn8" data-s-tooltip-placement="right" title="Loading when this answer was accepted&#x2026;" tabindex="0" role="note" aria-label="Accepted">
<div class="ta-center">
<svg aria-hidden="true" class="svg-icon iconCheckmarkLg" width="36" height="36" viewBox="0 0 36 36"><path d="m6 14 8 8L30 6v8L14 30l-8-8v-8Z"/></svg>
</div>
</div>
<a class="js-post-issue flex--item s-btn s-btn__unset c-pointer py6 mx-auto" href="/posts/16778711/timeline" data-shortcut="T" data-ks-title="timeline" data-controller="s-tooltip" data-s-tooltip-placement="right" title="Show activity on this post." aria-label="Timeline"><svg aria-hidden="true" class="mln2 mr0 svg-icon iconHistory" width="19" height="18" viewBox="0 0 19 18"><path d="M3 9a8 8 0 1 1 3.73 6.77L8.2 14.3A6 6 0 1 0 5 9l3.01-.01-4 4-4-4h3L3 9Zm7-4h1.01L11 9.36l3.22 2.1-.6.93L10 10V5Z"/></svg></a>
</div>
</div>
<div class="answercell post-layout--right">
<div class="s-prose js-post-body" itemprop="text">
<p><code>/</code> is not <em>the</em> delimiter in <code>sed</code> commands, it's just one of the possible ones. For this example, you can for example use <code>,</code> instead since it does not conflict with your strings;</p>
<pre><code>echo 'I think http://www.find.com/page is my favorite' |
sed 's,http://www.find.com/page,http://www.replace.com/page,g'
</code></pre>
</div>
<div class="mt24">
<div class="d-flex fw-wrap ai-start jc-end gs8 gsy">
<time itemprop="dateCreated" datetime="2013-05-27T18:31:56"></time>
<div class="flex--item mr16" style="flex: 1 1 100px;">
<div class="js-post-menu pt2" data-post-id="16778711" data-post-type-id="2">
<div class="d-flex gs8 s-anchors s-anchors__muted fw-wrap">
<div class="flex--item">
<a href="/a/16778711"
rel="nofollow"
itemprop="url"
class="js-share-link js-gps-track"
title="Short permalink to this answer"
data-gps-track="post.click({ item: 2, priv: 0, post_type: 2 })"
data-controller="se-share-sheet"
data-se-share-sheet-title="Share a link to this answer"
data-se-share-sheet-subtitle=""
data-se-share-sheet-post-type="answer"
data-se-share-sheet-social="facebook twitter devto"
data-se-share-sheet-location="2"
data-se-share-sheet-license-url="https%3a%2f%2fcreativecommons.org%2flicenses%2fby-sa%2f3.0%2f"
data-se-share-sheet-license-name="CC BY-SA 3.0"
data-s-popover-placement="bottom-start">Share</a>
</div>
<div class="flex--item">
<a href="/posts/16778711/edit" class="js-suggest-edit-post js-gps-track" data-gps-track="post.click({ item: 6, priv: 0, post_type: 2 })" title="">Improve this answer</a>
</div>
<div class="flex--item">
<button type="button"
id="btnFollowPost-16778711" class="s-btn s-btn__link js-follow-post js-follow-answer js-gps-track"
data-gps-track="post.click({ item: 14, priv: 0, post_type: 2 })"
data-controller="s-tooltip " data-s-tooltip-placement="bottom"
data-s-popover-placement="bottom" aria-controls=""
title="Follow this answer to receive notifications">
Follow
</button>
</div>
</div>
<div class="js-menu-popup-container"></div>
</div>
</div>
<div class="post-signature flex--item fl0">
<div class="user-info user-hover ">
<div class="d-flex ">
<div class="user-action-time fl-grow1">
answered <span title='2013-05-27 18:31:56Z' class='relativetime'>May 27, 2013 at 18:31</span>
</div>
</div>
<div class="user-gravatar32">
<a href="/users/477878/joachim-isaksson"><div class="gravatar-wrapper-32"><img src="https://i.stack.imgur.com/qounX.jpg?s=64&amp;g=1" alt="Joachim Isaksson&#39;s user avatar" width="32" height="32" class="bar-sm"></div></a>
</div>
<div class="user-details" itemprop="author" itemscope itemtype="http://schema.org/Person">
<a href="/users/477878/joachim-isaksson">Joachim Isaksson</a><span class="d-none" itemprop="name">Joachim Isaksson</span>
<div class="-flair">
<span class="reputation-score" title="reputation score 178,578" dir="ltr">179k</span><span title="26 gold badges" aria-hidden="true"><span class="badge1"></span><span class="badgecount">26</span></span><span class="v-visible-sr">26 gold badges</span><span title="288 silver badges" aria-hidden="true"><span class="badge2"></span><span class="badgecount">288</span></span><span class="v-visible-sr">288 silver badges</span><span title="300 bronze badges" aria-hidden="true"><span class="badge3"></span><span class="badgecount">300</span></span><span class="v-visible-sr">300 bronze badges</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<span class="d-none" itemprop="commentCount">0</span>
<div class="post-layout--right js-post-comments-component">
<div id="comments-16778711" class="comments js-comments-container bt bc-black-200 mt12 dno" data-post-id="16778711" data-min-length="15">
<ul class="comments-list js-comments-list"
data-remaining-comments-count="0"
data-canpost="false"
data-cansee="true"
data-comments-unavailable="false"
data-addlink-disabled="true">
</ul>
</div>
<div id="comments-link-16778711" data-rep=50 data-anon=true>
<a class="js-add-link comments-link disabled-link" title="Use comments to ask for more information or suggest improvements. Avoid comments like &#x201C;&#x2B;1&#x201D; or &#x201C;thanks&#x201D;." href="#" role="button">Add a comment</a>
<span class="js-link-separator dno">&nbsp;|&nbsp;</span>
<a class="js-show-link comments-link dno" title="Expand to show all comments on this post" href=# onclick="" role="button"></a>
</div>
</div>
</div>
</div>
<div class="js-zone-container zone-container-main">
<div id="dfp-mlb" class="everyonelovesstackoverflow everyoneloves__mid-leaderboard everyoneloves__leaderboard"></div>
<div class="js-report-ad-button-container " style="width: 728px"></div>
</div>
<a name="16778841"></a>
<div id="answer-16778841" class="answer js-answer" data-answerid="16778841" data-parentid="16778667" data-score="52" data-position-on-page="2" data-highest-scored="0" data-question-has-accepted-highest-score="1" itemprop="suggestedAnswer" itemscope itemtype="https://schema.org/Answer">
<div class="post-layout">
<div class="votecell post-layout--left">
<div class="js-voting-container d-flex jc-center fd-column ai-stretch gs4 fc-black-300" data-post-id="16778841" data-referrer="None">
<button class="js-vote-up-btn flex--item s-btn ba bar-pill c-pointer as-center bc-black-225 fc-black-500 h:bg-theme-primary-200 h:fc-black-500 f:fc-black-050"
data-controller="s-tooltip"
data-s-tooltip-placement="right"
title="This answer is useful"
aria-pressed="false"
aria-label="Up vote"
data-selected-classes="fc-theme-primary bc-theme-primary bg-theme-primary-100"
data-unselected-classes="bc-black-225 fc-black-500 h:bg-theme-primary-200 h:fc-black-500 f:fc-black-050">
<svg aria-hidden="true" class="svg-icon iconArrowUp" width="18" height="18" viewBox="0 0 18 18"><path d="M1 12h16L9 4l-8 8Z"/></svg>
</button>
<div class="js-vote-count flex--item d-flex fd-column ai-center fc-theme-body-font fw-bold fs-subheading py4"
itemprop="upvoteCount"
data-value="52">
52
</div>
<button class="js-vote-down-btn flex--item mb8 s-btn ba bar-pill c-pointer as-center bc-black-225 fc-black-500 h:bg-theme-primary-200 h:fc-black-500 f:fc-black-050"
data-controller="s-tooltip"
data-s-tooltip-placement="right"
title="This answer is not useful"
aria-pressed="false"
aria-label="Down vote"
data-selected-classes="fc-theme-primary bc-theme-primary bg-theme-primary-100"
data-unselected-classes="bc-black-225 fc-black-500 h:bg-theme-primary-200 h:fc-black-500 f:fc-black-050">
<svg aria-hidden="true" class="svg-icon iconArrowDown" width="18" height="18" viewBox="0 0 18 18"><path d="M1 6h16l-8 8-8-8Z"/></svg>
</button>
<button class="js-saves-btn s-btn s-btn__unset c-pointer py4"
type="button"
id="saves-btn-16778841"
data-controller="s-tooltip"
data-s-tooltip-placement="right"
data-s-popover-placement=""
title="Save this answer."
aria-pressed="false"
data-post-id="16778841"
data-post-type-id="2"
data-user-privilege-for-post-click="0"
aria-controls=""
data-s-popover-auto-show="false"
>
<svg aria-hidden="true" class="fc-theme-primary-400 js-saves-btn-selected d-none svg-icon iconBookmark" width="18" height="18" viewBox="0 0 18 18"><path d="M3 17V3c0-1.1.9-2 2-2h8a2 2 0 0 1 2 2v14l-6-4-6 4Z"/></svg>
<svg aria-hidden="true" class="js-saves-btn-unselected svg-icon iconBookmarkAlt" width="18" height="18" viewBox="0 0 18 18"><path d="m9 10.6 4 2.66V3H5v10.26l4-2.66ZM3 17V3c0-1.1.9-2 2-2h8a2 2 0 0 1 2 2v14l-6-4-6 4Z"/></svg>
</button>
<div class="js-accepted-answer-indicator flex--item fc-green-400 py6 mtn8 d-none" data-s-tooltip-placement="right" title="Loading when this answer was accepted&#x2026;" tabindex="0" role="note" aria-label="Accepted">
<div class="ta-center">
<svg aria-hidden="true" class="svg-icon iconCheckmarkLg" width="36" height="36" viewBox="0 0 36 36"><path d="m6 14 8 8L30 6v8L14 30l-8-8v-8Z"/></svg>
</div>
</div>
<a class="js-post-issue flex--item s-btn s-btn__unset c-pointer py6 mx-auto" href="/posts/16778841/timeline" data-shortcut="T" data-ks-title="timeline" data-controller="s-tooltip" data-s-tooltip-placement="right" title="Show activity on this post." aria-label="Timeline"><svg aria-hidden="true" class="mln2 mr0 svg-icon iconHistory" width="19" height="18" viewBox="0 0 19 18"><path d="M3 9a8 8 0 1 1 3.73 6.77L8.2 14.3A6 6 0 1 0 5 9l3.01-.01-4 4-4-4h3L3 9Zm7-4h1.01L11 9.36l3.22 2.1-.6.93L10 10V5Z"/></svg></a>
</div>
</div>
<div class="answercell post-layout--right">
<div class="s-prose js-post-body" itemprop="text">
<p><code>sed</code> can take whatever follows the "s" as the separator. Since you are working with <code>URL</code> it is a good practice to use a different delimiter other than <code>/</code> to not confuse <code>sed</code> when your substitution ends and replacement begins. </p>
<p>However, having said that you can definitely use <code>/</code> if you wish too. You just need to escape the literal <code>/</code>.</p>
<p>So, you can either do:</p>
<pre><code>sed 's/http:\/\/www.find.com\/page/http:\/\/www.replace.com\/page/g' input_file
</code></pre>
<p>or use a different delimiter to avoid making your cryptic sed more cryptic. </p>
<pre><code>sed 's#http://www.find.com/page#http://www.replace.com/page#g' input_file
</code></pre>
</div>
<div class="mt24">
<div class="d-flex fw-wrap ai-start jc-end gs8 gsy">
<time itemprop="dateCreated" datetime="2013-05-27T18:43:29"></time>
<div class="flex--item mr16" style="flex: 1 1 100px;">
<div class="js-post-menu pt2" data-post-id="16778841" data-post-type-id="2">
<div class="d-flex gs8 s-anchors s-anchors__muted fw-wrap">
<div class="flex--item">
<a href="/a/16778841"
rel="nofollow"
itemprop="url"
class="js-share-link js-gps-track"
title="Short permalink to this answer"
data-gps-track="post.click({ item: 2, priv: 0, post_type: 2 })"
data-controller="se-share-sheet"
data-se-share-sheet-title="Share a link to this answer"
data-se-share-sheet-subtitle=""
data-se-share-sheet-post-type="answer"
data-se-share-sheet-social="facebook twitter devto"
data-se-share-sheet-location="2"
data-se-share-sheet-license-url="https%3a%2f%2fcreativecommons.org%2flicenses%2fby-sa%2f3.0%2f"
data-se-share-sheet-license-name="CC BY-SA 3.0"
data-s-popover-placement="bottom-start">Share</a>
</div>
<div class="flex--item">
<a href="/posts/16778841/edit" class="js-suggest-edit-post js-gps-track" data-gps-track="post.click({ item: 6, priv: 0, post_type: 2 })" title="">Improve this answer</a>
</div>
<div class="flex--item">
<button type="button"
id="btnFollowPost-16778841" class="s-btn s-btn__link js-follow-post js-follow-answer js-gps-track"
data-gps-track="post.click({ item: 14, priv: 0, post_type: 2 })"
data-controller="s-tooltip " data-s-tooltip-placement="bottom"
data-s-popover-placement="bottom" aria-controls=""
title="Follow this answer to receive notifications">
Follow
</button>
</div>
</div>
<div class="js-menu-popup-container"></div>
</div>
</div>
<div class="post-signature flex--item fl0">
<div class="user-info ">
<div class="d-flex ">
<div class="user-action-time fl-grow1">
answered <span title='2013-05-27 18:43:29Z' class='relativetime'>May 27, 2013 at 18:43</span>
</div>
</div>
<div class="user-gravatar32">
<a href="/users/970195/jaypal-singh"><div class="gravatar-wrapper-32"><img src="https://www.gravatar.com/avatar/34597f9d2e0d17b890f0ef968bd61e6b?s=64&amp;d=identicon&amp;r=PG" alt="jaypal singh&#39;s user avatar" width="32" height="32" class="bar-sm"></div></a>
</div>
<div class="user-details" itemprop="author" itemscope itemtype="http://schema.org/Person">
<a href="/users/970195/jaypal-singh">jaypal singh</a><span class="d-none" itemprop="name">jaypal singh</span>
<div class="-flair">
<span class="reputation-score" title="reputation score 75,681" dir="ltr">75.7k</span><span title="23 gold badges" aria-hidden="true"><span class="badge1"></span><span class="badgecount">23</span></span><span class="v-visible-sr">23 gold badges</span><span title="105 silver badges" aria-hidden="true"><span class="badge2"></span><span class="badgecount">105</span></span><span class="v-visible-sr">105 silver badges</span><span title="147 bronze badges" aria-hidden="true"><span class="badge3"></span><span class="badgecount">147</span></span><span class="v-visible-sr">147 bronze badges</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<span class="d-none" itemprop="commentCount">3</span>
<div class="post-layout--right js-post-comments-component">
<div id="comments-16778841" class="comments js-comments-container bt bc-black-200 mt12 " data-post-id="16778841" data-min-length="15">
<ul class="comments-list js-comments-list"
data-remaining-comments-count="0"
data-canpost="false"
data-cansee="true"
data-comments-unavailable="false"
data-addlink-disabled="true">
<li id="comment-74298496" class="comment js-comment " data-comment-id="74298496" data-comment-owner-id="1530814" data-comment-score="0">
<div class="js-comment-actions comment-actions">
<div class="comment-score js-comment-score js-comment-edit-hide">
</div>
</div>
<div class="comment-text js-comment-text-and-form">
<div class="comment-body js-comment-edit-hide">
<span class="comment-copy">Using this approach, any reason why the following only outputs the file without any changes? <code>sed &#39;s#:0.0.1#:new-build-number#g&#39; some.yaml</code>. 1. The change does not occur. 2. I don&#39;t want the file printed, just updated.</span>
<div class="d-inline-flex ai-center">
&ndash;&nbsp;<a href="/users/1530814/idan-adar"
title="44,316 reputation"
class="comment-user">Idan Adar</a>
</div>
<span class="comment-date" dir="ltr"><span title='2017-04-26 04:14:03Z, License: CC BY-SA 3.0' class='relativetime-clean'>Apr 26, 2017 at 4:14</span></span>
<span title="this comment was edited 1 time">
<svg aria-hidden="true" class="va-text-bottom o50 svg-icon iconPencilSm" width="14" height="14" viewBox="0 0 14 14"><path fill="#F1B600" d="m2 10.12 6.37-6.43 1.88 1.88L3.88 12H2v-1.88Z"/><path fill="#E87C87" d="m11.1 1.71 1.13 1.12c.2.2.2.51 0 .71L11.1 4.7 9.21 2.86l1.17-1.15c.2-.2.51-.2.71 0Z"/></svg>
</span>
</div>
</div>
</li>
<li id="comment-100153746" class="comment js-comment " data-comment-id="100153746" data-comment-owner-id="2926436" data-comment-score="4">
<div class="js-comment-actions comment-actions">
<div class="comment-score js-comment-score js-comment-edit-hide">
<span title="number of &#x27;useful comment&#x27; votes received"
class="cool">4</span>
</div>
</div>
<div class="comment-text js-comment-text-and-form">
<div class="comment-body js-comment-edit-hide">
<span class="comment-copy">The space character works well as a <code>sed</code> delimiter when processing URLs. It&#39;s visually clean and will never occur in a properly-formatted (i.e., escaped) URL.</span>
<div class="d-inline-flex ai-center">
&ndash;&nbsp;<a href="/users/2926436/patrick-dark"
title="2,239 reputation"
class="comment-user">Patrick Dark</a>
</div>
<span class="comment-date" dir="ltr"><span title='2019-06-27 23:40:58Z, License: CC BY-SA 4.0' class='relativetime-clean'>Jun 27, 2019 at 23:40</span></span>
</div>
</div>
</li>
<li id="comment-116897758" class="comment js-comment " data-comment-id="116897758" data-comment-owner-id="11533365" data-comment-score="1">
<div class="js-comment-actions comment-actions">
<div class="comment-score js-comment-score js-comment-edit-hide">
<span title="number of &#x27;useful comment&#x27; votes received"
class="cool">1</span>
</div>
</div>
<div class="comment-text js-comment-text-and-form">
<div class="comment-body js-comment-edit-hide">
<span class="comment-copy">I had to use <code>sed -i</code> to make it work. Why doesn&#39;t it work without the <code>-i</code>? I read that <code>-i[SUFFIX], --in-place[=SUFFIX] edit files in place (makes backup if SUFFIX supplied)</code> What does it mean that it makes backup?</span>
<div class="d-inline-flex ai-center">
&ndash;&nbsp;<a href="/users/11533365/vasiliki"
title="143 reputation"
class="comment-user">Vasiliki</a>
</div>
<span class="comment-date" dir="ltr"><span title='2021-02-09 12:53:14Z, License: CC BY-SA 4.0' class='relativetime-clean'>Feb 9, 2021 at 12:53</span></span>
<span title="this comment was edited 3 times">
<svg aria-hidden="true" class="va-text-bottom o50 svg-icon iconPencilSm" width="14" height="14" viewBox="0 0 14 14"><path fill="#F1B600" d="m2 10.12 6.37-6.43 1.88 1.88L3.88 12H2v-1.88Z"/><path fill="#E87C87" d="m11.1 1.71 1.13 1.12c.2.2.2.51 0 .71L11.1 4.7 9.21 2.86l1.17-1.15c.2-.2.51-.2.71 0Z"/></svg>
</span>
</div>
</div>
</li>
</ul>
</div>
<div id="comments-link-16778841" data-rep=50 data-anon=true>
<a class="js-add-link comments-link disabled-link" title="Use comments to ask for more information or suggest improvements. Avoid comments like &#x201C;&#x2B;1&#x201D; or &#x201C;thanks&#x201D;." href="#" role="button">Add a comment</a>
<span class="js-link-separator dno">&nbsp;|&nbsp;</span>
<a class="js-show-link comments-link dno" title="Expand to show all comments on this post" href=# onclick="" role="button"></a>
</div>
</div>
</div>
</div>
<h2 class="bottom-notice" data-loc="1">
<div>
Not the answer you&#x27;re looking for? Browse other questions tagged <ul class='ml0 list-ls-none js-post-tag-list-wrapper d-inline'><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/bash" class="post-tag" title="show questions tagged &#39;bash&#39;" aria-label="show questions tagged &#39;bash&#39;" rel="tag" aria-labelledby="tag-bash-tooltip-container">bash</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/sed" class="post-tag" title="show questions tagged &#39;sed&#39;" aria-label="show questions tagged &#39;sed&#39;" rel="tag" aria-labelledby="tag-sed-tooltip-container">sed</a></li><li class='d-inline mr4 js-post-tag-list-item'><a href="/questions/tagged/escaping" class="post-tag" title="show questions tagged &#39;escaping&#39;" aria-label="show questions tagged &#39;escaping&#39;" rel="tag" aria-labelledby="tag-escaping-tooltip-container">escaping</a></li></ul> or <a href="/questions/ask">ask your own question</a>. </div>
</h2>
</div>
</div>
<div id="sidebar" class="show-votes" role="complementary" aria-label="sidebar">
<div class="s-sidebarwidget s-sidebarwidget__yellow s-anchors s-anchors__grayscale mb16" data-tracker="cb=1">
<ul class="d-block p0 m0">
<li class="s-sidebarwidget--header s-sidebarwidget__small-bold-text d-flex fc-black-500 d:fc-black-600 bb bbw1">
The Overflow Blog
</li>
<li class="s-sidebarwidget--item d-flex px16">
<div class="flex--item1 fl-shrink0">
<svg aria-hidden="true" class="va-text-top svg-icon iconPencilSm" width="14" height="14" viewBox="0 0 14 14"><path fill="#F1B600" d="m2 10.12 6.37-6.43 1.88 1.88L3.88 12H2v-1.88Z"/><path fill="#E87C87" d="m11.1 1.71 1.13 1.12c.2.2.2.51 0 .71L11.1 4.7 9.21 2.86l1.17-1.15c.2-.2.51-.2.71 0Z"/></svg> </div>
<div class="flex--item wmn0 ow-break-word">
<a href="https://stackoverflow.blog/2024/03/05/chunking-express-an-expert-breaks-down-how-to-build-your-rag-system/" class="js-gps-track" data-ga="[&quot;community bulletin board&quot;,&quot;The Overflow Blog&quot;,&quot;https://stackoverflow.blog/2024/03/05/chunking-express-an-expert-breaks-down-how-to-build-your-rag-system/&quot;,null,null]" data-gps-track="communitybulletin.click({ priority: 1, position: 0 })">Chunking express: An expert breaks down how to build your RAG system</a>
</div>
</li>
<li class="s-sidebarwidget--item d-flex px16">
<div class="flex--item1 fl-shrink0">
<svg aria-hidden="true" class="va-text-top svg-icon iconPencilSm" width="14" height="14" viewBox="0 0 14 14"><path fill="#F1B600" d="m2 10.12 6.37-6.43 1.88 1.88L3.88 12H2v-1.88Z"/><path fill="#E87C87" d="m11.1 1.71 1.13 1.12c.2.2.2.51 0 .71L11.1 4.7 9.21 2.86l1.17-1.15c.2-.2.51-.2.71 0Z"/></svg> </div>
<div class="flex--item wmn0 ow-break-word">
<a href="https://stackoverflow.blog/2024/03/06/building-genai-features-in-practice-with-intuit-mailchimp/" class="js-gps-track" data-ga="[&quot;community bulletin board&quot;,&quot;The Overflow Blog&quot;,&quot;https://stackoverflow.blog/2024/03/06/building-genai-features-in-practice-with-intuit-mailchimp/&quot;,null,null]" data-gps-track="communitybulletin.click({ priority: 1, position: 1 })">Building GenAI features in practice with Intuit Mailchimp</a>
</div>
</li>
<li class="s-sidebarwidget--header s-sidebarwidget__small-bold-text d-flex fc-black-500 d:fc-black-600 bb bbw1">
Upcoming Events
</li>
<li class="s-sidebarwidget--item d-flex px16">
<div class="flex--item1 fl-shrink0">
<div class="favicon favicon-stackoverflow" title="Stack Overflow"></div>
</div>
<div class="flex--item wmn0 ow-break-word">
<a href="https://stackoverflow.com/election" class="fc-danger js-gps-track" data-ga="[&quot;community bulletin board&quot;,&quot;Upcoming Events&quot;,&quot;https://stackoverflow.com/election&quot;,null,null]" data-gps-track="communitybulletin.click({ priority: 5, position: 2 })">2024 Community Moderator Election</a>
<div>ends <span title='2024-03-13 20:00:00Z' class='relativetime'>in 6 days</span></div>
</div>
</li>
<li class="s-sidebarwidget--header s-sidebarwidget__small-bold-text d-flex fc-black-500 d:fc-black-600 bb bbw1">
Featured on Meta
</li>
<li class="s-sidebarwidget--item d-flex px16">
<div class="flex--item1 fl-shrink0">
<div class="favicon favicon-stackexchangemeta" title="Meta Stack Exchange"></div> </div>
<div class="flex--item wmn0 ow-break-word">
<a href="https://meta.stackexchange.com/questions/398127/our-partnership-with-google-and-commitment-to-socially-responsible-ai" class="js-gps-track" data-ga="[&quot;community bulletin board&quot;,&quot;Featured on Meta&quot;,&quot;https://meta.stackexchange.com/questions/398127/our-partnership-with-google-and-commitment-to-socially-responsible-ai&quot;,null,null]" data-gps-track="communitybulletin.click({ priority: 3, position: 3 })">Our partnership with Google and commitment to socially responsible AI</a>
</div>
</li>
<li class="s-sidebarwidget--item d-flex px16">
<div class="flex--item1 fl-shrink0">
<div class="favicon favicon-stackexchangemeta" title="Meta Stack Exchange"></div> </div>
<div class="flex--item wmn0 ow-break-word">
<a href="https://meta.stackexchange.com/questions/398279/shifting-the-data-dump-schedule-a-proposal" class="js-gps-track" data-ga="[&quot;community bulletin board&quot;,&quot;Featured on Meta&quot;,&quot;https://meta.stackexchange.com/questions/398279/shifting-the-data-dump-schedule-a-proposal&quot;,null,null]" data-gps-track="communitybulletin.click({ priority: 3, position: 4 })">Shifting the data dump schedule: A proposal</a>
</div>
</li>
<li class="s-sidebarwidget--item d-flex px16">
<div class="flex--item1 fl-shrink0">
<div class="favicon favicon-stackoverflowmeta" title="Meta Stack Overflow"></div> </div>
<div class="flex--item wmn0 ow-break-word">
<a href="https://meta.stackoverflow.com/questions/421831/temporary-policy-generative-ai-e-g-chatgpt-is-banned" class="js-gps-track" data-ga="[&quot;community bulletin board&quot;,&quot;Featured on Meta&quot;,&quot;https://meta.stackoverflow.com/questions/421831/temporary-policy-generative-ai-e-g-chatgpt-is-banned&quot;,null,null]" data-gps-track="communitybulletin.click({ priority: 6, position: 5 })">Temporary policy: Generative AI (e.g., ChatGPT) is banned</a>
</div>
</li>
</ul>
</div>
<div class="js-zone-container zone-container-sidebar">
<div id="dfp-tsb" class="everyonelovesstackoverflow everyoneloves__top-sidebar"></div>
<div class="js-report-ad-button-container " style="width: 300px"></div>
</div>
<div class="js-zone-container zone-container-sidebar">
<div id="dfp-msb" class="everyonelovesstackoverflow everyoneloves__mid-sidebar"></div>
<div class="js-report-ad-button-container " style="width: 300px"></div>
</div>
<div id="hireme"></div> <div class="module sidebar-linked">
<h4 id="h-linked">Linked</h4>
<div class="linked" data-tracker="lq=1">
<div class="spacer js-gps-track" data-gps-track="linkedquestion.click({ source_post_id: 16778667, target_question_id: 14687725, position: 0 })">
<a href="/q/14687725" title="Question score (upvotes - downvotes)">
<div class="answer-votes answered-accepted default">1</div>
</a>
<a href="/questions/14687725/trying-to-escape-a-for-sed-on-ubuntu?noredirect=1" class="question-hyperlink">Trying to escape a / for sed on ubuntu</a>
</div>
<div class="spacer js-gps-track" data-gps-track="linkedquestion.click({ source_post_id: 16778667, target_question_id: 38313733, position: 1 })">
<a href="/q/38313733" title="Question score (upvotes - downvotes)">
<div class="answer-votes answered-accepted default">5</div>
</a>
<a href="/questions/38313733/bulk-change-of-git-remote-origin-in-various-repositories-bash-command?noredirect=1" class="question-hyperlink">Bulk change of git remote origin in various repositories - bash command</a>
</div>
<div class="spacer js-gps-track" data-gps-track="linkedquestion.click({ source_post_id: 16778667, target_question_id: 49518690, position: 2 })">
<a href="/q/49518690" title="Question score (upvotes - downvotes)">
<div class="answer-votes default">1</div>
</a>
<a href="/questions/49518690/search-and-replace-url-in-all-files?noredirect=1" class="question-hyperlink">Search and replace URL in all files</a>
</div>
</div>
</div>
<div class="module sidebar-related">
<h4 id="h-related">Related</h4>
<div class="related js-gps-related-questions" data-tracker="rq=1">
<div class="spacer" data-question-id="71323">
<a href="/q/71323" title="Question score (upvotes - downvotes)" >
<div class="answer-votes answered-accepted extra-large">2403</div>
</a>
<a href="/questions/71323/how-to-replace-a-character-by-a-newline-in-vim" class="question-hyperlink">How to replace a character by a newline in Vim</a>
</div>
<div class="spacer" data-question-id="1251999">
<a href="/q/1251999" title="Question score (upvotes - downvotes)" >
<div class="answer-votes answered-accepted extra-large">1727</div>
</a>
<a href="/questions/1251999/how-can-i-replace-each-newline-n-with-a-space-using-sed" class="question-hyperlink">How can I replace each newline (\n) with a space using sed?</a>
</div>
<div class="spacer" data-question-id="525592">
<a href="/q/525592" title="Question score (upvotes - downvotes)" >
<div class="answer-votes answered-accepted large">805</div>
</a>
<a href="/questions/525592/find-and-replace-inside-a-text-file-from-a-bash-command" class="question-hyperlink">Find and Replace Inside a Text File from a Bash Command</a>
</div>
<div class="spacer" data-question-id="1583219">
<a href="/q/1583219" title="Question score (upvotes - downvotes)" >
<div class="answer-votes large">920</div>
</a>
<a href="/questions/1583219/how-can-i-do-a-recursive-find-replace-of-a-string-with-awk-or-sed" class="question-hyperlink">How can I do a recursive find/replace of a string with awk or sed?</a>
</div>
<div class="spacer" data-question-id="24816">
<a href="/q/24816" title="Question score (upvotes - downvotes)" >
<div class="answer-votes answered-accepted large">656</div>
</a>
<a href="/questions/24816/escaping-html-strings-with-jquery" class="question-hyperlink">Escaping HTML strings with jQuery</a>
</div>
<div class="spacer" data-question-id="1103149">
<a href="/q/1103149" title="Question score (upvotes - downvotes)" >
<div class="answer-votes answered-accepted large">506</div>
</a>
<a href="/questions/1103149/non-greedy-reluctant-regex-matching-in-sed" class="question-hyperlink">Non greedy (reluctant) regex matching in sed?</a>
</div>
<div class="spacer" data-question-id="876239">
<a href="/q/876239" title="Question score (upvotes - downvotes)" >
<div class="answer-votes answered-accepted extra-large">2004</div>
</a>
<a href="/questions/876239/how-to-redirect-and-append-both-standard-output-and-standard-error-to-a-file-wit" class="question-hyperlink">How to redirect and append both standard output and standard error to a file with Bash</a>
</div>
<div class="spacer" data-question-id="4565700">
<a href="/q/4565700" title="Question score (upvotes - downvotes)" >
<div class="answer-votes answered-accepted extra-large">1790</div>
</a>
<a href="/questions/4565700/how-to-specify-the-private-ssh-key-to-use-when-executing-shell-command-on-git" class="question-hyperlink">How to specify the private SSH-key to use when executing shell command on Git?</a>
</div>
<div class="spacer" data-question-id="339483">
<a href="/q/339483" title="Question score (upvotes - downvotes)" >
<div class="answer-votes answered-accepted large">775</div>
</a>
<a href="/questions/339483/how-can-i-remove-the-first-line-of-a-text-file-using-bash-sed-script" class="question-hyperlink">How can I remove the first line of a text file using bash/sed script?</a>
</div>
</div>
</div>
<script type="text/javascript">
$(document).ready(function() {
$(".js-gps-related-questions .spacer").click(function () {
fireRelatedEvent($(this).index() + 1, $(this).data('question-id'));
});
function fireRelatedEvent(position, questionId) {
StackExchange.using("gps", function() {
StackExchange.gps.track('related_questions.click',
{
position: position,
originQuestionId: 16778667,
relatedQuestionId: +questionId,
location: 'sidebar',
source: 'Baseline_Fallback'
});
});
}
});
</script>
<div id="hot-network-questions" class="module tex2jax_ignore">
<h4>
<a href="https://stackexchange.com/questions?tab=hot"
class="js-gps-track s-link s-link__inherit"
data-gps-track="posts_hot_network.click({ item_type:1, location:11 })">
Hot Network Questions
</a>
</h4>
<ul>
<li >
<div class="favicon favicon-politics" title="Politics Stack Exchange"></div><a href="https://politics.stackexchange.com/questions/86177/what-was-the-original-context-of-margaret-thatchers-quote-by-nikki-haley" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:475 }); posts_hot_network.click({ item_type:2, location:11 })">
What was the original context of Margaret Thatcher&#x27;s quote by Nikki Haley?
</a>
</li>
<li >
<div class="favicon favicon-math" title="Mathematics Stack Exchange"></div><a href="https://math.stackexchange.com/questions/4876455/an-exact-definition-of-multiplication" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:69 }); posts_hot_network.click({ item_type:2, location:11 })">
An exact definition of multiplication
</a>
</li>
<li >
<div class="favicon favicon-codegolf" title="Code Golf Stack Exchange"></div><a href="https://codegolf.stackexchange.com/questions/271563/one-dimensional-pinball" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:200 }); posts_hot_network.click({ item_type:2, location:11 })">
One-Dimensional Pinball
</a>
</li>
<li >
<div class="favicon favicon-hsm" title="History of Science and Mathematics Stack Exchange"></div><a href="https://hsm.stackexchange.com/questions/17319/emmy-noethers-announcement-in-1932-icm" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:587 }); posts_hot_network.click({ item_type:2, location:11 })">
Emmy Noether&#x27;s announcement in 1932 ICM
</a>
</li>
<li >
<div class="favicon favicon-crypto" title="Cryptography Stack Exchange"></div><a href="https://crypto.stackexchange.com/questions/110985/how-do-rsa-implementations-avoid-cases-where-the-ciphertext-and-n-are-not-coprim" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:281 }); posts_hot_network.click({ item_type:2, location:11 })">
How do RSA implementations avoid cases where the ciphertext and N are not coprime?
</a>
</li>
<li class="dno js-hidden">
<div class="favicon favicon-scifi" title="Science Fiction &amp; Fantasy Stack Exchange"></div><a href="https://scifi.stackexchange.com/questions/285939/what-does-it-mean-when-faramir-says-i-would-not-snare-even-an-orc-with-a-falseh" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:186 }); posts_hot_network.click({ item_type:2, location:11 })">
What does it mean when Faramir says &quot;I would not snare even an orc with a falsehood&quot;?
</a>
</li>
<li class="dno js-hidden">
<div class="favicon favicon-philosophy" title="Philosophy Stack Exchange"></div><a href="https://philosophy.stackexchange.com/questions/110222/abortion-debate-should-we-teach-abstinence-along-with-condoms-and-contracepti" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:265 }); posts_hot_network.click({ item_type:2, location:11 })">
Abortion Debate - Should we teach abstinence (along with condoms and contraceptions) to adolescents as a preventive measure of unwanted pregnancy?
</a>
</li>
<li class="dno js-hidden">
<div class="favicon favicon-codegolf" title="Code Golf Stack Exchange"></div><a href="https://codegolf.stackexchange.com/questions/271522/can-i-follow-this-recipe" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:200 }); posts_hot_network.click({ item_type:2, location:11 })">
Can I follow this recipe?
</a>
</li>
<li class="dno js-hidden">
<div class="favicon favicon-money" title="Personal Finance &amp; Money Stack Exchange"></div><a href="https://money.stackexchange.com/questions/161730/how-to-replace-a-whole-life-policy" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:93 }); posts_hot_network.click({ item_type:2, location:11 })">
How to replace a whole-life policy?
</a>
</li>
<li class="dno js-hidden">
<div class="favicon favicon-mathoverflow" title="MathOverflow"></div><a href="https://mathoverflow.net/questions/466525/ideals-generated-by-turing-independent-sets" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:504 }); posts_hot_network.click({ item_type:2, location:11 })">
Ideals generated by Turing independent sets
</a>
</li>
<li class="dno js-hidden">
<div class="favicon favicon-rpg" title="Role-playing Games Stack Exchange"></div><a href="https://rpg.stackexchange.com/questions/210759/can-you-enter-a-steel-defender-for-protection" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:122 }); posts_hot_network.click({ item_type:2, location:11 })">
Can you enter a Steel defender for protection?
</a>
</li>
<li class="dno js-hidden">
<div class="favicon favicon-worldbuilding" title="Worldbuilding Stack Exchange"></div><a href="https://worldbuilding.stackexchange.com/questions/255899/how-would-a-sentient-species-without-technology-derive-general-relativity" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:579 }); posts_hot_network.click({ item_type:2, location:11 })">
How would a sentient species without technology derive General Relativity?
</a>
</li>
<li class="dno js-hidden">
<div class="favicon favicon-unix" title="Unix &amp; Linux Stack Exchange"></div><a href="https://unix.stackexchange.com/questions/771798/cutting-machine-with-linux-fsck-died-with-status-code-4" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:106 }); posts_hot_network.click({ item_type:2, location:11 })">
Cutting machine with Linux: fsck died with status code 4
</a>
</li>
<li class="dno js-hidden">
<div class="favicon favicon-tex" title="TeX - LaTeX Stack Exchange"></div><a href="https://tex.stackexchange.com/questions/712406/how-can-i-write-a-complex-exponential-in-latex-so-that-it-looks-presentable" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:85 }); posts_hot_network.click({ item_type:2, location:11 })">
How can I write a complex exponential in LaTeX so that it looks presentable?
</a>
</li>
<li class="dno js-hidden">
<div class="favicon favicon-electronics" title="Electrical Engineering Stack Exchange"></div><a href="https://electronics.stackexchange.com/questions/705148/confusion-with-polling-data-by-an-mcu-using-uart" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:135 }); posts_hot_network.click({ item_type:2, location:11 })">
Confusion with polling data by an MCU using UART
</a>
</li>
<li class="dno js-hidden">
<div class="favicon favicon-mathematica" title="Mathematica Stack Exchange"></div><a href="https://mathematica.stackexchange.com/questions/300112/create-n-random-points-on-0-1-with-minimum-distance" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:387 }); posts_hot_network.click({ item_type:2, location:11 })">
Create n random points on [0,1] with minimum distance
</a>
</li>
<li class="dno js-hidden">
<div class="favicon favicon-graphicdesign" title="Graphic Design Stack Exchange"></div><a href="https://graphicdesign.stackexchange.com/questions/164669/how-to-crop-complex-vector-graphics-in-illustrator" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:174 }); posts_hot_network.click({ item_type:2, location:11 })">
How to crop complex (vector) graphics in Illustrator
</a>
</li>
<li class="dno js-hidden">
<div class="favicon favicon-astronomy" title="Astronomy Stack Exchange"></div><a href="https://astronomy.stackexchange.com/questions/57089/why-is-the-lunar-relief-not-visible-in-photographs-of-solar-eclipses" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:514 }); posts_hot_network.click({ item_type:2, location:11 })">
Why is the lunar relief not visible in photographs of solar eclipses?
</a>
</li>
<li class="dno js-hidden">
<div class="favicon favicon-electronics" title="Electrical Engineering Stack Exchange"></div><a href="https://electronics.stackexchange.com/questions/705075/what-does-an-sd-card-do-internally-during-the-74-clock-cycles-at-startup" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:135 }); posts_hot_network.click({ item_type:2, location:11 })">
What does an SD Card do internally during the 74 clock cycles at startup
</a>
</li>
<li class="dno js-hidden">
<div class="favicon favicon-cooking" title="Seasoned Advice"></div><a href="https://cooking.stackexchange.com/questions/127822/how-to-remove-the-smell-of-bicarbonate-of-soda" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:49 }); posts_hot_network.click({ item_type:2, location:11 })">
How to remove the smell of bicarbonate of soda?
</a>
</li>
<li class="dno js-hidden">
<div class="favicon favicon-politics" title="Politics Stack Exchange"></div><a href="https://politics.stackexchange.com/questions/86165/why-do-communist-governments-turn-more-socially-conservative-over-time" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:475 }); posts_hot_network.click({ item_type:2, location:11 })">
Why do Communist governments turn more socially conservative over time?
</a>
</li>
<li class="dno js-hidden">
<div class="favicon favicon-rpg" title="Role-playing Games Stack Exchange"></div><a href="https://rpg.stackexchange.com/questions/210754/interaction-clarification-with-invoke-curse-and-temporary-hitpoints" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:122 }); posts_hot_network.click({ item_type:2, location:11 })">
Interaction clarification with &#x27;Invoke curse&#x27; and temporary hitpoints
</a>
</li>
<li class="dno js-hidden">
<div class="favicon favicon-diy" title="Home Improvement Stack Exchange"></div><a href="https://diy.stackexchange.com/questions/295804/how-can-i-seal-improperly-installed-vinyl-tile-joints" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:73 }); posts_hot_network.click({ item_type:2, location:11 })">
How can I seal improperly installed vinyl tile joints?
</a>
</li>
<li class="dno js-hidden">
<div class="favicon favicon-ell" title="English Language Learners Stack Exchange"></div><a href="https://ell.stackexchange.com/questions/349513/both-of-my-parents-are-dead-or-both-of-my-parents-were-dead" class="js-gps-track question-hyperlink mb0" data-gps-track="site.switch({ item_type:11, target_site:481 }); posts_hot_network.click({ item_type:2, location:11 })">
both of my parents are dead or both of my parents were dead
</a>
</li>
</ul>
<a href="#"
class="show-more js-show-more js-gps-track"
data-gps-track="posts_hot_network.click({ item_type:3, location:11 })">
more hot questions
</a>
</div>
</div>
</div>
<script>StackExchange.ready(function(){$.get('/posts/16778667/ivc/6ee7?prg=0951b50a-c2f5-4c20-9dc4-3e8f9e957d96');});</script>
<noscript><div><img src="/posts/16778667/ivc/6ee7?prg=0951b50a-c2f5-4c20-9dc4-3e8f9e957d96" class="dno" alt="" width="0" height="0"></div></noscript><div style="display:none" id="js-codeblock-lang">lang-bash</div></div>
</div>
</div>
<script type="text/javascript">
var cam = cam || { opt: {} };
var clcGamLoaderOptions = cam || { opt: {} };
var opt = clcGamLoaderOptions.opt;
opt.omni = 'BwoLCOLlg-TPtt88EAUYq4uACCACKAI6E3xiYXNofHNlZHxlc2NhcGluZ3xIAH8y5zZWmPz-_Hs';
opt.refresh = !1;
opt.refreshInterval = 90;
opt.sf = !0;
opt.hb = !1;
opt.ll = !0;
opt.tlb_position = 0;
opt.personalization_consent = !1;
opt.targeting_consent = !1;
opt.performance_consent = !1;
opt.targeting = {Registered:['false'],'so-tag':['bash','sed','escaping'],'tag-reportable':['bash','sed','escaping'],NumberOfAnswers:['2']};
opt.adReportEnabled = !0;
opt.adReportUrl = '/ads/report-ad';
opt.adReportText = 'Report this ad';
opt.adReportFileTypeErrorMessage = 'Please select a PNG or JPG file.';
opt.adReportFileSizeErrorMessage = 'The file must be under 2 MiB.';
opt.adReportErrorText = 'Error uploading ad report.';
opt.adReportThanksText = 'Thanks for your feedback. We’ll review this against our code of conduct and take action if necessary.';
opt.adReportLoginExpiredMessage = 'Your login session has expired, please login and try again.';
opt.adReportLoginErrorMessage = 'An error occurred when loading the report form - please try again';
opt.adReportModalClass = 'js-ad-report';
opt.perRequestGuid = '0951b50a-c2f5-4c20-9dc4-3e8f9e957d96';
opt.responseHash = 'DzCUclefnNslsc8n0sr679KreaUFJ23j6tuVphl&#x2B;tQc=';
opt.targeting.TargetingConsent = ['False_Passive'];
opt.allowAccountTargetingForThisRequest = !1;
const urlParams = new URLSearchParams(window.location.search);
if (urlParams.has('dfptestads')) {
const dfptestads = urlParams.get('dfptestads');
opt.targeting.DfpTestAds = dfptestads;
}
</script>
<script>;(()=>{"use strict";var __webpack_modules__={23:(e,t,s)=>{s.d(t,{Z7:()=>l,eq:()=>d,kG:()=>i});const n=(r=location.pathname,/^\/tags\//.test(r)||/^\/questions\/tagged\//.test(r)?"tag-pages":/^\/discussions\//.test(r)||/^\/beta\/discussions/.test(r)?"discussions":/^\/$/.test(r)||/^\/home/.test(r)?"home-page":"question-pages");var r;let a=location.hostname;const o={slots:{lb:[[728,90]],mlb:[[728,90]],smlb:[[728,90]],bmlb:[[728,90]],sb:e=>"dfp-tsb"===e?[[300,250],[300,600]]:[[300,250]],"tag-sponsorship":[[730,135]],"mobile-below-question":[[320,50],[300,250]],msb:[[300,250],[300,600]],"talent-conversion-tracking":[[1,1]],"site-sponsorship":[[230,60]]},ids:{"dfp-tlb":"lb","dfp-mlb":"mlb","dfp-smlb":"smlb","dfp-bmlb":"bmlb","dfp-tsb":"sb","dfp-isb":"sb","dfp-tag":"tag-sponsorship","dfp-msb":"msb","dfp-sspon":"site-sponsorship","dfp-m-aq":"mobile-below-question"},idsToExcludeFromAdReports:["dfp-sspon"]};function i(){return Object.keys(o.ids)}function d(e){return o.idsToExcludeFromAdReports.indexOf(e)<0}function l(e){var t=e.split("_")[0];const s=o.ids[t];let r=o.slots[s];return"function"==typeof r&&(r=r(t)),{path:`/248424177/${a}/${s}/${n}`,sizes:r,zone:s}}},865:(e,t,s)=>{function n(e){return"string"==typeof e?document.getElementById(e):e}function r(e){return!!(e=n(e))&&"none"===getComputedStyle(e).display}function a(e){return!r(e)}function o(e){return!!e}function i(e){return/^\s*$/.test(n(e).innerHTML)}function d(e){const{style:t}=e;t.height=t.maxHeight=t.minHeight="auto",t.display="none"}function l(e){const{style:t}=e;t.height=t.maxHeight=t.minHeight="auto",t.display="none",[].forEach.call(e.children,l)}function c(e){const{style:t}=e;t.height=t.maxHeight=t.minHeight="auto",t.removeProperty("display")}function g(e){const t=document.createElement("script");t.src=e,document.body.appendChild(t)}function p(e){return s=e,(t=[]).push=function(e){return s(),delete this.push,this.push(e)},t;var t,s}function h(e){let t="function"==typeof HTMLTemplateElement;var s=document.createElement(t?"template":"div");return e=e.trim(),s.innerHTML=e,t?s.content.firstChild:s.firstChild}s.d(t,{$Z:()=>c,Bv:()=>h,Gx:()=>g,Nj:()=>n,QZ:()=>p,cf:()=>d,pn:()=>a,wo:()=>l,xb:()=>i,xj:()=>r,yb:()=>o})},763:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{t:()=>AdReports});var _common_helper__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(865),_console__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(276),_ad_units__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(23);class AdReports{constructor(e,t){if(this.googletag=e,this.cam=t,this.allowedFileTypes=["image/png","image/jpg","image/jpeg"],this.ignoreValidation=!1,_console__WEBPACK_IMPORTED_MODULE_1__.cM("Ad reporting init"),this.cam=t,this.callOnButtonClick=e=>this.onButtonClick(e),this.googletag.pubads().addEventListener("slotRenderEnded",e=>this.handleSlotRendered(e)),Array.isArray(t.slotsRenderedEvents)){_console__WEBPACK_IMPORTED_MODULE_1__.cM("Adding report button to "+t.slotsRenderedEvents.length+" events that have transpired");for(var s=0;s<t.slotsRenderedEvents.length;s++)this.handleSlotRendered(t.slotsRenderedEvents[s])}}handleSlotRendered(e){if(e&&e.slot&&!e.isEmpty&&(e.creativeId||e.lineItemId||!e.isEmpty)){var t=e.slot.getSlotElementId();if(t){var s=document.getElementById(t);if(s)if((0,_ad_units__WEBPACK_IMPORTED_MODULE_0__.eq)(t)){var n=s?.closest(".js-zone-container")?.querySelector(".js-report-ad-button-container");n.innerHTML="",n.append(this.createButton(e)),n.style.height="24px",_console__WEBPACK_IMPORTED_MODULE_1__.cM("Added report button to the bottom of "+t)}else _console__WEBPACK_IMPORTED_MODULE_1__.cM("Not adding report button to the bottom of "+t+": shouldHaveReportButton = false");else _console__WEBPACK_IMPORTED_MODULE_1__.cM("Not adding report button to the bottom of "+t+": resolved invalid adUnit element")}else _console__WEBPACK_IMPORTED_MODULE_1__.cM("Not adding report button to the bottom of element: invalid adUnitElementId")}else _console__WEBPACK_IMPORTED_MODULE_1__.cM("Not adding report button to the bottom of element: invalid SlotRenderEndedEvent")}async onButtonClick(e){e.preventDefault();let t=e.target;const s=t.dataset.modalUrl,n=t.dataset.googleEventData;return await this.loadModal(s,t,n),!1}createButton(e){let t=document.createElement("button");var s=JSON.stringify(e);return t.dataset.googleEventData=s,t.dataset.modalUrl=this.cam.opt.adReportUrl,t.dataset.adUnit=e.slot.getSlotElementId(),t.classList.add("js-report-ad","s-btn","s-btn__link","fs-fine","mt2","float-right"),t.append(document.createTextNode(this.cam.opt.adReportText)),t.removeEventListener("click",this.callOnButtonClick),t.addEventListener("click",this.callOnButtonClick),t}async loadModal(url,$link,googleEventData){try{await window.StackExchange.helpers.loadModal(url,{returnElements:window.$($link)}),this.initForm(googleEventData)}catch(e){var message="",response=e.responseText?eval(`(${e.responseText})`):null;message=response&&response.isLoggedOut?this.cam.opt.adReportLoginExpiredMessage:this.cam.opt.adReportLoginErrorMessage,window.StackExchange.helpers.showToast(message,{type:"danger"})}}removeModal(){window.StackExchange.helpers.closePopups(document.querySelectorAll("."+this.cam.opt.adReportModalClass),"dismiss")}initForm(e,t=!1){this.ignoreValidation=t,this.$form=document.querySelector(".js-ad-report-form"),this.$googleEventData=this.$form.querySelector(".js-json-data"),this.$adReportReasons=this.$form.querySelectorAll(".js-ad-report-reason"),this.$adReportReasonOther=this.$form.querySelector(".js-ad-report-reason-other"),this.$fileUploaderInput=this.$form.querySelector(".js-file-uploader-input"),this.$imageUploader=this.$form.querySelector(".js-image-uploader"),this.$clearImageUpload=this.$form.querySelector(".js-clear-image-upload"),this.$imageUploaderText=this.$form.querySelector(".js-image-uploader-text"),this.$imageUploaderPreview=this.$form.querySelector(".js-image-uploader-preview"),this.$fileErrorMessage=this.$form.querySelector(".js-file-error");const s=this.$form.querySelector(".js-drag-drop-enabled"),n=this.$form.querySelector(".js-drag-drop-disabled");this.$googleEventData.value=e,this.$adReportReasons.forEach((e,t)=>e.addEventListener("change",e=>{this.$adReportReasonOther.classList.toggle("d-none","3"!==e.target.value)})),this.$fileUploaderInput.addEventListener("change",()=>{this.validateFileInput()&&this.updateImagePreview(this.$fileUploaderInput.files)}),this.$clearImageUpload.addEventListener("click",e=>{e.preventDefault(),this.clearImageUpload()});try{this.$fileUploaderInput[0].value="",this.$imageUploader.addEventListener("dragenter dragover dragleave drop",this.preventDefaults),this.$imageUploader.addEventListener("dragenter dragover",this.handleDragStart),this.$imageUploader.addEventListener("dragleave drop",this.handleDragEnd),this.$imageUploader.addEventListener("drop",this.handleDrop)}catch(e){s.classList.add("d-none"),n.classList.remove("d-none")}this.$form.removeEventListener("",this.handleDragEnd),this.$form.addEventListener("submit",async e=>(e.preventDefault(),this.submitForm(),!1))}clearImageUpload(){this.$fileUploaderInput.value="",this.$imageUploaderPreview.setAttribute("src",""),this.$imageUploaderPreview.classList.add("d-none"),this.$clearImageUpload.classList.add("d-none"),this.$imageUploaderText.classList.remove("d-none"),this.$imageUploader.classList.add("p16","ba","bas-dashed","bc-black-100")}preventDefaults(e){e.preventDefault(),e.stopPropagation()}handleDragStart(e){this.$imageUploader.classList.remove("bas-dashed"),this.$imageUploader.classList.add("bas-solid","bc-black-100")}handleDragEnd(e){this.$imageUploader.classList.remove("bas-solid","bc-black-100"),this.$imageUploader.classList.add("bas-dashed")}handleDrop(e){var t=e.originalEvent.dataTransfer.files;FileReader&&t&&1===t.length&&(this.$fileUploaderInput.files=t,this.validateFileInput()&&this.updateImagePreview(t))}setError(e){this.$fileErrorMessage.parentElement.classList.toggle("has-error",e)}updateImagePreview(e){this.$imageUploader.classList.remove("p16","ba","bas-dashed","bc-black-100"),this.$clearImageUpload.classList.remove("d-none"),this.$imageUploaderText.classList.add("d-none");var t=new FileReader;t.onload=e=>{null!=e.target&&(this.$imageUploaderPreview.setAttribute("src",e.target.result),this.$imageUploaderPreview.classList.remove("d-none"))},t.readAsDataURL(e[0])}validateFileInput(){if(this.ignoreValidation)return!0;const e=this.cam.opt.adReportFileTypeErrorMessage,t=this.cam.opt.adReportFileSizeErrorMessage;if(null==this.$fileUploaderInput.files)return!1;var s=this.$fileUploaderInput.files[0];return null==s?(this.setError(!0),!1):this.allowedFileTypes.indexOf(s.type)<0?(this.$fileErrorMessage.textContent=e,this.$fileErrorMessage.classList.remove("d-none"),this.setError(!0),!1):s.size>2097152?(this.$fileErrorMessage.textContent=t,this.$fileErrorMessage.classList.remove("d-none"),this.setError(!0),!1):(this.$fileErrorMessage.classList.add("d-none"),this.setError(!1),!0)}async gatherDiagnosticInfo(){return{BrowserVersion:await this.getBrowserVersion()}}getElementSource(e){return e.outerHTML}getNestedIFrameElement(e){var t=e.querySelector("iframe");return t.contentDocument?t.contentDocument.documentElement:t.contentWindow.document.documentElement}async getBrowserVersion(){return await navigator.userAgentData.getHighEntropyValues(["fullVersionList"]).then(e=>JSON.stringify(e.fullVersionList))}async submitForm(){if(!this.validateFileInput())return!1;this.$form.querySelector("[type=submit]").setAttribute("disabled","true");var e=JSON.parse(this.$googleEventData.value||"{}");e.Reason=parseInt(this.$form.querySelector(".js-ad-report-reason:checked").value,10),e.Description=this.$adReportReasonOther.value,this.$googleEventData.value=JSON.stringify(e);var t=new FormData(this.$form);if("1"===t.get("shareDiagnosticInfo")){var s=await this.gatherDiagnosticInfo();Object.keys(s).forEach(e=>t.append(e,s[e]))}try{const e=await window.fetch(this.$form.getAttribute("action"),{method:this.$form.getAttribute("method"),body:t,cache:"no-cache"}),s=e.headers.get("content-type")||"",r=await e.text();if(!e.ok)throw new Error("response not valid");if(0===s.indexOf("text/html")){var n=(0,_common_helper__WEBPACK_IMPORTED_MODULE_2__.Bv)(r);const e=n?n.querySelector(".js-modal-content"):null;if(_console__WEBPACK_IMPORTED_MODULE_1__.cM("$popupContent"),_console__WEBPACK_IMPORTED_MODULE_1__.cM(e),!e)throw new Error(`Could not find .js-modal-content in response from ${this.$form.getAttribute("action")}`);document.querySelector(".js-modal-content").replaceWith(e)}else window.StackExchange.helpers.showToast(this.cam.opt.adReportThanksText,{type:"success"}),this.removeModal()}catch(e){window.StackExchange.helpers.showToast(this.cam.opt.adReportErrorText,{type:"danger"})}finally{let e=this.$form.querySelector("[type=submit]");e&&e.removeAttribute("disabled")}}}},276:(e,t,s)=>{function n(...e){}function r(...e){}s.d(t,{cM:()=>n,vU:()=>r})}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var s=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](s,s.exports,__webpack_require__),s.exports}__webpack_require__.d=(e,t)=>{for(var s in t)__webpack_require__.o(t,s)&&!__webpack_require__.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var __webpack_exports__={};(()=>{var e=__webpack_require__(276),t=(e=>(e[e.Above=0]="Above",e[e.Below=1]="Below",e))(t||{});const s=Object.assign({},{"lib":"https://cdn.sstatic.net/clc/js/bundles/gam_loader_script/gam_loader_script.bundle.741.e6ce4ee02b887d174e72.min.js","style":null,"u":null,"wa":true,"kt":2000,"tto":true,"h":"clc.stackoverflow.com","allowed":"^(((talent\\.)?stackoverflow)|(blog\\.codinghorror)|(.*\\.googlesyndication)|(serverfault|askubuntu|superuser)|([^\\.]+\\.stackexchange))\\.com$","wv":true,"al":false,"abd":true,"cpa_liid":[5882654614],"cpa_cid":[138377597667],"dp":false,"tgt_to":1000,"tgt_u":"https://clc.stackoverflow.com/get-user-acct-tgt","tgt_e":true,"tgt_p":100});var n=__webpack_require__(23),r=__webpack_require__(865),a=__webpack_require__(763);class o{constructor(t,s){this.googletag=t,this.interval=s,e.cM("Ad refresh init. interval: "+s),this.googletag.pubads().addEventListener("impressionViewable",e=>this.onImpressionViewable(e)),e.cM("done enabling ad refresh")}onImpressionViewable(t){var s=t.slot;e.cM("ad refresh - slot "+s.getSlotElementId()+" is viewable, initializing refresh"),this.scheduleRefresh(s)}scheduleRefresh(e){setTimeout(()=>this.refreshAdSlot(e),1e3*this.interval)}static refreshMyAd(t,s){let n=t.pubads().getSlots().find(e=>e.getSlotElementId()===s);n&&(e.cM("refreshMyAd - refreshing ad slot "+s),t.pubads().refresh([n]))}refreshAdSlot(t){var s=t.getSlotElementId();this.isElementVisibleInBrowser(s)?(e.cM("refreshing ad slot "+s),googletag.pubads().refresh([t])):(e.cM("refresh skipped this time; ad slot not viewable:"+s),this.scheduleRefresh(t))}isElementVisibleInBrowser(e){var t=document.getElementById(e);if(null!==t){var s=t.getBoundingClientRect();if(s.top>=0&&s.left>=0&&s.bottom<=(window.innerHeight||document.documentElement.clientHeight)&&s.right<=(window.innerWidth||document.documentElement.clientWidth))return!0}return!1}}var i=(e=>(e.Off="Off",e.PreSurvey="PreSurvey",e.Collect="Collect",e.PostSurvey="PostSurvey",e))(i||{});class d{constructor(e,t){this.lineItemImpressions=[],this.surveysIdsCompleted=[],this.lineItemImpressions=e,this.surveysIdsCompleted=t}addImpression(e,t){let s={brandId:e,lineItemId:t,timestamp:new Date};this.lineItemImpressions.push(s)}addBrandSurveyCompleted(e){-1===this.surveysIdsCompleted.indexOf(e)&&this.surveysIdsCompleted.push(e)}getTotalBrandImpressions(){let e=new Map;for(let t of this.lineItemImpressions)if(e.has(t.brandId)){let s=e.get(t.brandId);e.set(t.brandId,s+1)}else e.set(t.brandId,1);return e}getBrandLineItemImpressions(e){let t={};for(let s of this.lineItemImpressions)if(s.brandId==e)if(void 0!==t[s.lineItemId]){let e=t[s.lineItemId];t[s.lineItemId]=e+1}else t[s.lineItemId]=1;return t}}class l{constructor(){this.surveyEngagementLocalStorageKey="clc-survey-engagement"}getBrandSurveyEngagement(){let e=localStorage.getItem(this.surveyEngagementLocalStorageKey);if(null===e)return new d([],[]);let t=JSON.parse(e);return new d(t.lineItemImpressions,t.surveysIdsCompleted)}saveBrandSurveyEngagement(e){let t=JSON.stringify(e);localStorage.setItem(this.surveyEngagementLocalStorageKey,t)}}class c{constructor(){this.surveyRepository=new l}getBrandSurveyEngagement(){return this.surveyRepository.getBrandSurveyEngagement()}recordImpression(e,t){let s=this.getBrandSurveyEngagement();s.addImpression(e,t),this.surveyRepository.saveBrandSurveyEngagement(s)}recordBrandSurveyCompleted(e){let t=this.getBrandSurveyEngagement();t.addBrandSurveyCompleted(e),this.surveyRepository.saveBrandSurveyEngagement(t)}}class g{constructor(t,s){this.googletag=t,this.brandSettings=s,this.brandSlotMap=new Map,this.brandSurveyEngagementService=new c,e.cM("Brand Survey init: "+JSON.stringify(s)),void 0!==s?(this.googletag.pubads().addEventListener("slotRenderEnded",e=>this.handleSlotRendered(e)),this.googletag.pubads().addEventListener("impressionViewable",e=>this.onImpressionViewable(e)),e.cM("done enabling Brand Survey")):e.cM("Brand Survey init: brandSettings is undefined, not initializing")}handleSlotRendered(t){e.cM("Brand Survey - slot rendered - slot:"+JSON.stringify(t.slot.getSlotElementId())+" lineItem: "+t.lineItemId);let s=this.findItemWithId(t.lineItemId);if(null===s||s.mode!==i.Collect)this.brandSlotMap.delete(t.slot.getSlotElementId());else{let e={brandId:s.brandId,lineItemId:t.lineItemId};this.brandSlotMap.set(t.slot.getSlotElementId(),e)}}onImpressionViewable(t){let s=t.slot;if(e.cM("ad - Brand Survey - impression viewable. Details: "+JSON.stringify(s.getSlotElementId())),e.cM("ad - Brand Survey - slot "+s.getSlotElementId()+" is viewable"),this.brandSlotMap.has(s.getSlotElementId())){let t=this.brandSlotMap.get(s.getSlotElementId());e.cM("Brand Survey - brand "+t.brandId+" is viewable"),this.recordImpression(this.brandSlotMap.get(s.getSlotElementId()))}}recordImpression(t){e.cM("ad - Brand Survey - recording impression for brand "+t.brandId),this.brandSurveyEngagementService.recordImpression(t.brandId,t.lineItemId)}findItemWithId(t){return e.cM("brand settings: "+JSON.stringify(this.brandSettings)),this.brandSettings.find(e=>e.lineItemIds.includes(t))||null}}const p="response-brand-survey-submit|",h="request-brand-survey-metadata|",m="record-metric-on-server|",u="request-dsp-tags",f="response-dsp-tags|";class _{static refreshAdIfBrandSurveyIsDuplicated(e,t,s){this.alreadyCompletedThisBrandSurvey(t)&&o.refreshMyAd(e,s)}static alreadyCompletedThisBrandSurvey(e){return(new c).getBrandSurveyEngagement().surveysIdsCompleted.includes(e)}}window.cam=new class{constructor(t=null){if(this.gptImported=!1,this.slotsRenderedEvents=[],this.collapsed={},e.cM("constructor"),this.clc_options=s,window.clcGamLoaderOptions)Object.assign(this,window.clcGamLoaderOptions);else if(void 0===this.opt){let e=window.opt;e&&(this.opt=e)}}init(){if(e.cM("init"),void 0===this.opt)throw new Error("opt not set, required by GAM Loader");e.cM("init brand survey service"),this.getUserMetaPromise=this.getUserMeta(),e.cM("setup message handler"),window.addEventListener("message",e=>{this.onmessage(e)})}handleSlotRenderedNoAdReport(){if(googletag.pubads().addEventListener("slotRenderEnded",e=>this.applyExtraMarginBottom(e)),Array.isArray(this.slotsRenderedEvents))for(var e=0;e<this.slotsRenderedEvents.length;e++)this.applyExtraMarginBottom(this.slotsRenderedEvents[e])}onmessage(t){let s="omni";if(t.data&&("string"==typeof t.data||t.data instanceof String))if(0===t.data.indexOf("get-omni-")){e.cM("Recevied get-omni message, sending back omni");var n=t.source,a=this.opt.omni,o="string"==typeof a?a:"";n.postMessage([s,o,this.opt.perRequestGuid].join("|"),"*")}else if(0===t.data.indexOf("collapse-")){e.cM("Recevied collapse message, collapse ad iframe"),e.cM(t);for(var i=t.source.window,d=document.getElementsByTagName("IFRAME"),l=0;l<d.length;l++){var g=d[l];if(g.contentWindow==i)return void(0,r.wo)(g.parentElement.parentElement.parentElement)}}else if(0===t.data.indexOf("resize|")){e.cM("Recevied resize message, resize ad iframe"),e.cM(t);let s=this._getFrameByEvent(t),n=t.data.indexOf("|")+1,r=t.data.slice(n),a=parseFloat(r)+.5;e.cM("New iframe height "+a),s.height=a.toString(),s.parentElement.style.height=a.toString()+"px"}else if(0===t.data.indexOf("getmarkup|")){let s=t.data.indexOf("|")+1,n=t.data.slice(s);e.cM("Recevied get markup message: "+n);let r=this._getFrameByEvent(t).closest(".everyonelovesstackoverflow");const a=document.createElement("script");a.dataset.adZoneId=r.id,a.src=n,document.body.appendChild(a)}else if(0===t.data.indexOf("window-location|")){let s=t.data.indexOf("|")+1,n=t.data.slice(s);e.cM("Recevied window location message: "+n),n.startsWith("/")||(n="/"+n),window.open(window.location.protocol+"//"+window.location.host+n,"_blank")}else if(0===t.data.indexOf("request-brand-survey-submit|")){let s=t.data.split("|"),n=s[1],r=s[2],a=s[3],o=JSON.parse(a);e.cM(n),e.cM(r),e.cM(a),e.cM("Received brand survey "+n+" response message: "+r);var v=new FormData;for(var b in o)v.append(b,o[b]);let i=this._getFrameByEvent(t);if(_.alreadyCompletedThisBrandSurvey(+n))return e.cM("Already completed this brand survey. Not submitting duplicate to server."),void i.contentWindow.postMessage("response-brand-survey-submit-duplicate|","*");e.cM("Send the brand survey to the server"),fetch(r,{method:"POST",body:v}).then(e=>e.json()).then(e=>i.contentWindow.postMessage(p,"*")).catch(e=>i.contentWindow.postMessage(p,"*"))}else if(0===t.data.indexOf("brand-survey-completed-store|")){let s=t.data.split("|"),n=(s[1],s[2]);if(e.cM("Received brand survey completed store message for survey ID "+n),_.alreadyCompletedThisBrandSurvey(+n))return void e.cM("Already completed this brand survey. Not recording duplicate locally.");e.cM("Record brand survey completion locally"),(new c).recordBrandSurveyCompleted(+n)}else if(0===t.data.indexOf(h)){let s=t.data.split("|"),n=s[1],r=s[2];e.cM("Received message: request-brand-survey-metadata| with Brand Survey ID "+r);let a=(new c).getBrandSurveyEngagement().getBrandLineItemImpressions(+n),o=JSON.stringify(a),i=this._getFrameByEvent(t);e.cM("sending impression data: "+o),i.contentWindow.postMessage("response-brand-survey-metadata|"+this.opt.responseHash+"|"+this.opt.perRequestGuid+"|"+o,"*")}else if(0===t.data.indexOf("refresh-if-duplicate-brand-survey|")){let e=t.data.split("|")[1],s=this.getSlotElementIdByEvent(t);_.refreshAdIfBrandSurveyIsDuplicated(googletag,+e,s)}else if(0===t.data.indexOf(m)){e.cM("Received message: record-metric-on-server| with args: "+t.data);let s=t.data.split("|"),n=s[1],r=s[2],a=s[3],o=s[4],i=new FormData;i.append("brandSurveyId",a.toString()),i.append("responseHash",this.opt.responseHash),i.append("perRequestGuid",this.opt.perRequestGuid),i.append("questionNumber",n.toString()),i.append("metricType",o.toString()),fetch(r,{method:"POST",body:i}).then(e=>e.ok).catch(t=>{e.cM("SendMetricToServer: Error sending metric to server: "+t)})}else if(0===t.data.indexOf(u)){e.cM("Received message: request-dsp-tags with args: "+t.data);let s=this._getFrameByEvent(t);if(!this.opt.targeting["so-tag"])return void s.contentWindow.postMessage(f,"*");const n=this.opt.targeting["so-tag"].join(",");e.cM("sending targeting tags: "+n),s.contentWindow.postMessage(f+n,"*")}else e.cM("Received unhandled message")}getSlotElementIdByEvent(e){let t=this._getFrameByEvent(e).parentElement?.parentElement?.id;return t||""}_getFrameByEvent(e){return Array.from(document.getElementsByTagName("iframe")).filter(t=>t.contentWindow===e.source)[0]}classifyZoneIds(e){const t=e.map(r.Nj).filter(r.yb);return{eligible:t.filter(r.xb).filter(r.pn),ineligible:t.filter(r.xj)}}applyExtraMarginBottom(t){if(t&&t.slot&&!t.isEmpty&&(t.creativeId||t.lineItemId||!t.isEmpty)){var s=t.slot.getSlotElementId();if(s){var r=document.getElementById(s);if(r)if((0,n.eq)(s)){var a=r?.closest(".js-zone-container");a.style.marginBottom="24px",e.cM("Applied extra margin to the bottom of "+s)}else e.cM("Not applying extra margin to the bottom of "+s+": shouldHaveReportButton = false");else e.cM("Not applying extra margin to the bottom of "+s+": resolved invalid adUnit element")}else e.cM("Not applying extra margin to the bottom of element: invalid adUnitElementId")}else e.cM("Not applying extra margin to the bottom of element: invalid SlotRenderEndedEvent")}async load(s=(0,n.kG)()){const i=this.opt.tlb_position===t.Above?["dfp-mlb","dfp-smlb"]:["dfp-mlb","dfp-smlb","dfp-tlb"];if(!this.isGptReady())return e.cM("Initializing..."),this.initGpt(),void googletag.cmd.push(()=>this.load(s));this.opt.adReportEnabled?(e.cM("Ad reporting enabled"),this.adReports=new a.t(googletag,this)):(e.cM("Ad reporting not enabled"),this.handleSlotRenderedNoAdReport()),this.opt.refresh?(e.cM("Ad refresh enabled"),this.adRefresh=new o(googletag,this.opt.refreshInterval)):e.cM("Ad refresh not enabled"),this.opt.brandSurveyEnabled&&(e.cM("Brand Survey enabled"),this.brandSurvey=new g(googletag,this.opt.brandSurveySettings)),e.cM("Attempting to load ads into ids: ",s);const{eligible:d,ineligible:l}=this.classifyZoneIds(s);if(this.initDebugPanel(googletag,d.concat(l)),d.forEach(e=>(0,r.cf)(e)),l.forEach(r.wo),0===d.length)return void e.cM("Found no ad ids on page");e.cM("Eligible ids:",d),this.opt.abd&&this.appendAdblockDetector();var c=googletag.pubads().getSlots();if(c){var p=c.filter(e=>s.indexOf(e.getSlotElementId())>=0);googletag.destroySlots(p)}this.opt.sf&&(googletag.pubads().setForceSafeFrame(!0),googletag.pubads().setSafeFrameConfig({allowOverlayExpansion:!0,allowPushExpansion:!0,sandbox:!0})),e.cM("Targeting consent: Checking...");let h=!1,m=!1;void 0!==this.opt.targeting_consent&&(m=!0,e.cM("Targeting consent: Parameter set"),e.cM("Targeting consent: Consent given? ",this.opt.targeting_consent),h=this.opt.targeting_consent),void 0!==this.opt.personalization_consent&&(e.cM("Personalization consent: Parameter set"),e.cM("Personalization consent: Consent given? ",this.opt.personalization_consent),h=h&&this.opt.personalization_consent),h=h&&m,this.setPrivacySettings(h),this.opt.ll||googletag.pubads().enableSingleRequest(),cam.sreEvent||(googletag.pubads().addEventListener("slotRenderEnded",e=>this.onSlotRendered(e)),cam.sreEvent=!0),await this.setTargeting();var u=d.filter(e=>!this.opt.ll||i.indexOf(e.id)<0),f=d.filter(e=>!!this.opt.ll&&i.indexOf(e.id)>=0);e.cM("Up front ids:",u),e.cM("Lazy loaded ids:",f),u.forEach(t=>{e.cM(`Defining ad for element ${t.id}`),this.defineSlot(t.id,googletag),t.setAttribute("data-dfp-zone","true")}),googletag.enableServices(),u.forEach(t=>{e.cM(`Displaying ad for element ${t.id}`),googletag.cmd.push(()=>googletag.display(t.id))}),this.opt.ll&&(e.cM("Enabling lazy loading for GAM"),googletag.pubads().enableLazyLoad({fetchMarginPercent:0,renderMarginPercent:0}),e.cM("Setting up lazy loaded ad units"),f.forEach(t=>{e.cM(`Lazy loading - Defining Slot ${t.id}`),this.defineSlot(t.id,googletag)}),f.forEach(t=>{e.cM(`Lazy loading - Displaying ad for element ${t.id}`),googletag.cmd.push(()=>googletag.display(t.id))}))}setPrivacySettings(e){e||googletag.pubads().setPrivacySettings({nonPersonalizedAds:!0})}async setTargeting(){if(!googletag)throw new Error("googletag not defined");let t=this.opt.targeting;if(!t)throw new Error("Targeting not defined (is "+typeof t+")");Object.keys(t).forEach(s=>{e.cM(`-> targeting - ${s}: ${t[s]}`),googletag.pubads().setTargeting(s,t[s])});let s=!1;if(void 0!==this.opt.targeting_consent&&(s=this.opt.targeting_consent),s){let t=(new c).getBrandSurveyEngagement();if(t.getTotalBrandImpressions().forEach((t,s)=>{e.cM(`-> targeting - BrandImpressions: ${s}: ${t}`),googletag.pubads().setTargeting("brand_"+s.toString()+"_impressions",t.toString())}),t.surveysIdsCompleted.forEach(t=>{e.cM(`-> targeting - SurveysTaken: ${t}`),googletag.pubads().setTargeting("survey_"+t+"_taken","true")}),this.clc_options.tgt_e&&this.getUserMetaPromise){let t=await this.getUserMetaPromise;t&&t.tgt_acct?(e.cM("-> targeting - User Account: "+t.tgt_acct),googletag.pubads().setTargeting("user-acct",t.tgt_acct.company_name),googletag.pubads().setTargeting("user_acct_top",t.tgt_acct.company_name),googletag.pubads().setTargeting("user_industry",t.tgt_acct.industry),googletag.pubads().setTargeting("user_employee_count",t.tgt_acct.employee_range)):e.cM("-> targeting - User Account: Not Found"),t&&Object.prototype.hasOwnProperty.call(t,"is_high_rep_earner")?(e.cM("-> targeting - High Rep Earner: "+t.is_high_rep_earner),googletag.pubads().setTargeting("IsHighRepEarner",t.is_high_rep_earner?"true":"false")):e.cM("-> targeting - High Rep Earner: not found")}}}appendAdblockDetector(){const e=document.createElement("div");e.className="adsbox",e.id="clc-abd",e.style.position="absolute",e.style.pointerEvents="none",e.innerHTML="&nbsp;",document.body.appendChild(e)}onSlotRendered(s){try{const o=s.slot.getSlotElementId();let i=[];o||i.push("id=0");const d=document.getElementById(o);if(o&&!d&&i.push("el=0"),0!==i.length)return void this.stalled(i.join("&"));const{path:l,sizes:c,zone:g}=(0,n.Z7)(o);if(this.collapsed[g]&&s.isEmpty)return e.cM(`No line item for the element #${d.id}... collapsing.`),void(0,r.wo)(d);if(this.slotsRenderedEvents.push(s),s.lineItemId||s.creativeId||!s.isEmpty){e.cM(`Rendered ad for element #${d.id} [line item #${s.lineItemId}]`),e.cM(s);var a=d.parentElement;if(a.classList.contains("js-zone-container")){switch((0,r.cf)(a),o){case"dfp-tlb":this.opt.tlb_position===t.Above?a.classList.add("mb8"):a.classList.add("mt16");break;case"dfp-tag":a.classList.add("mb8");break;case"dfp-msb":a.classList.add("mt16");break;case"dfp-mlb":case"dfp-smlb":case"dfp-bmlb":a.classList.add("my8");break;case"dfp-isb":a.classList.add("mt24");break;case"dfp-m-aq":a.classList.add("my12"),a.classList.add("mx-auto")}(0,r.$Z)(a),(0,r.$Z)(d)}else e.cM(`No ad for element #${d.id}, collapsing`),e.cM(s),(0,r.wo)(d)}}catch(t){e.cM("Exception thrown onSlotRendered"),e.cM(t),this.stalled("e=1")}}stalled(e){(new Image).src=`https://${this.clc_options.h}/stalled.gif?${e}`}defineSlot(t,s){"dfp-isb"===t&&(e.cM("-> targeting - Sidebar: Inline"),s.pubads().setTargeting("Sidebar",["Inline"])),"dfp-tsb"===t&&(e.cM("-> targeting - Sidebar: Right"),s.pubads().setTargeting("Sidebar",["Right"]));const{path:r,sizes:a,zone:o}=(0,n.Z7)(t);e.cM(`Defining slot for ${t}: ${r}, sizes: ${JSON.stringify(a)}`),s.defineSlot(r,a,t).addService(s.pubads())}importGptLibrary(){this.gptImported||(this.gptImported=!0,void 0===this.opt.targeting_consent||this.opt.targeting_consent?(0,r.Gx)("https://securepubads.g.doubleclick.net/tag/js/gpt.js"):(0,r.Gx)("https://pagead2.googlesyndication.com/tag/js/gpt.js"))}isGptReady(){return"undefined"!=typeof googletag&&!!googletag.apiReady}initGpt(){"undefined"==typeof googletag&&(window.googletag={cmd:(0,r.QZ)(()=>this.importGptLibrary())})}getUserMeta(){if(this.opt.allowAccountTargetingForThisRequest&&this.clc_options.tgt_e&&this.clc_options.tgt_p>0){if(e.cM("Targeting enabled."),this.clc_options.tgt_p<100){e.cM("Targeting rate limit enabled. Rolling the dice...");const t=Math.floor(100*Math.random())+1;if(e.cM("Rolled "+t+" and the max is "+this.clc_options.tgt_p),t>this.clc_options.tgt_p)return void e.cM("Will not request targeting.")}return e.cM("Will request targeting."),function(e,t,s,n){if(t){const t=new Headers;return t.append("Accept","application/json"),async function(e,t={},s=5e3){if("number"!=typeof s&&null!=s&&!1!==s){if("string"!=typeof s)throw new Error("fetchWithTimeout: timeout must be a number");if(s=parseInt(s),isNaN(s))throw new Error("fetchWithTimeout: timeout must be a number (or string that can be parsed to a number)")}const n=new AbortController,{signal:r}=n,a=fetch(e,{...t,signal:r}),o=setTimeout(()=>n.abort(),s);try{const e=await a;return clearTimeout(o),e}catch(e){throw clearTimeout(o),e}}(s+"?"+new URLSearchParams({omni:e}),{method:"GET",mode:"cors",headers:t},n).then(e=>e.json())}return Promise.reject("No consent")}(this.opt.omni,this.opt.targeting_consent,this.clc_options.tgt_u,this.clc_options.tgt_to).catch(t=>{e.vU("Error fetching user account targeting"),e.vU(t)})}e.cM("Targeting disabled. Will not request account targeting data.")}initDebugPanel(t,s){e.cM("initDebugPanel"),e.cM("Not showing debug panel.")}},window.clcGamLoaderOptions&&(cam.init(),cam.load())})()})();</script>
<footer id="footer" class="site-footer js-footer theme-light__forced" role="contentinfo">
<div class="site-footer--container">
<div class="site-footer--logo">
<a href="https://stackoverflow.com" aria-label="Stack Overflow"><svg aria-hidden="true" class="native svg-icon iconLogoGlyphMd" width="32" height="37" viewBox="0 0 32 37"><path d="M26 33v-9h4v13H0V24h4v9h22Z" fill="#BCBBBB"/><path d="m21.5 0-2.7 2 9.9 13.3 2.7-2L21.5 0ZM26 18.4 13.3 7.8l2.1-2.5 12.7 10.6-2.1 2.5ZM9.1 15.2l15 7 1.4-3-15-7-1.4 3Zm14 10.79.68-2.95-16.1-3.35L7 23l16.1 2.99ZM23 30H7v-3h16v3Z" fill="#F48024"/></svg></a>
</div>
<nav class="site-footer--nav">
<div class="site-footer--col">
<h5 class="-title"><a href="https://stackoverflow.com" class="js-gps-track" data-gps-track="footer.click({ location: 2, link: 15})">Stack Overflow</a></h5>
<ul class="-list js-primary-footer-links">
<li><a href="/questions" class="js-gps-track -link" data-gps-track="footer.click({ location: 2, link: 16})">Questions</a></li>
<li><a href="/help" class="js-gps-track -link" data-gps-track="footer.click({ location: 2, link: 3 })">Help</a></li>
</ul>
</div>
<div class="site-footer--col">
<h5 class="-title"><a href="https://stackoverflow.co/" class="js-gps-track" data-gps-track="footer.click({ location: 2, link: 19 })">Products</a></h5>
<ul class="-list">
<li><a href="https://stackoverflow.co/teams/" class="js-gps-track -link"
data-ga="[&quot;teams traffic&quot;,&quot;footer - site nav&quot;,&quot;stackoverflow.com/teams&quot;,null,{&quot;dimension4&quot;:&quot;teams&quot;}]"
data-gps-track="footer.click({ location: 2, link: 29 })">Teams</a></li>
<li><a href="https://stackoverflow.co/advertising/" class="js-gps-track -link" data-gps-track="footer.click({ location: 2, link: 21 })">Advertising</a></li>
<li><a href="https://stackoverflow.co/collectives/" class="js-gps-track -link" data-gps-track="footer.click({ location: 2, link: 40 })">Collectives</a></li>
<li><a href="https://stackoverflow.co/talent/" class="js-gps-track -link" data-gps-track="footer.click({ location: 2, link: 20 })">Talent</a></li>
</ul>
</div>
<div class="site-footer--col">
<h5 class="-title"><a class="js-gps-track" data-gps-track="footer.click({ location: 2, link: 1 })" href="https://stackoverflow.co/">Company</a></h5>
<ul class="-list">
<li><a class="js-gps-track -link" data-gps-track="footer.click({ location: 2, link: 1 })" href="https://stackoverflow.co/">About</a></li>
<li><a class="js-gps-track -link" data-gps-track="footer.click({ location: 2, link: 27 })" href="https://stackoverflow.co/company/press/">Press</a></li>
<li><a class="js-gps-track -link" data-gps-track="footer.click({ location: 2, link: 9 })" href="https://stackoverflow.co/company/work-here/">Work Here</a></li>
<li><a class="js-gps-track -link" data-gps-track="footer.click({ location: 2, link: 7 })" href="https://stackoverflow.com/legal">Legal</a></li>
<li><a class="js-gps-track -link" data-gps-track="footer.click({ location: 2, link: 8 })" href="https://stackoverflow.com/legal/privacy-policy">Privacy Policy</a></li>
<li><a class="js-gps-track -link" data-gps-track="footer.click({ location: 2, link: 37 })" href="https://stackoverflow.com/legal/terms-of-service/public">Terms of Service</a></li>
<li><a class="js-gps-track -link" data-gps-track="footer.click({ location: 2, link: 13 })" href="/contact">Contact Us</a></li>
<li class="" id="consent-footer-link"><a class="js-gps-track -link js-cookie-settings" data-gps-track="footer.click({ location: 2, link: 38 })" href="#" data-consent-popup-loader="footer">Cookie Settings</a></li>
<li><a class="js-gps-track -link" data-gps-track="footer.click({ location: 2, link: 39 })" href="https://stackoverflow.com/legal/cookie-policy">Cookie Policy</a></li>
</ul>
</div>
<div class="site-footer--col site-footer--categories-nav">
<div>
<h5 class="-title"><a href="https://stackexchange.com" data-gps-track="footer.click({ location: 2, link: 30 })">Stack Exchange Network</a></h5>
<ul class="-list">
<li>
<a href="https://stackexchange.com/sites#technology" class="-link js-gps-track" data-gps-track="footer.click({ location: 2, link: 24 })">
Technology
</a>
</li>
<li>
<a href="https://stackexchange.com/sites#culturerecreation" class="-link js-gps-track" data-gps-track="footer.click({ location: 2, link: 24 })">
Culture &amp; recreation
</a>
</li>
<li>
<a href="https://stackexchange.com/sites#lifearts" class="-link js-gps-track" data-gps-track="footer.click({ location: 2, link: 24 })">
Life &amp; arts
</a>
</li>
<li>
<a href="https://stackexchange.com/sites#science" class="-link js-gps-track" data-gps-track="footer.click({ location: 2, link: 24 })">
Science
</a>
</li>
<li>
<a href="https://stackexchange.com/sites#professional" class="-link js-gps-track" data-gps-track="footer.click({ location: 2, link: 24 })">
Professional
</a>
</li>
<li>
<a href="https://stackexchange.com/sites#business" class="-link js-gps-track" data-gps-track="footer.click({ location: 2, link: 24 })">
Business
</a>
</li>
<li class="mt16 md:mt0">
<a href="https://api.stackexchange.com/" class="-link js-gps-track" data-gps-track="footer.click({ location: 2, link: 24 })">
API
</a>
</li>
<li>
<a href="https://data.stackexchange.com/" class="-link js-gps-track" data-gps-track="footer.click({ location: 2, link: 24 })">
Data
</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="site-footer--copyright fs-fine md:mt24">
<ul class="-list -social md:mb8">
<li><a class="js-gps-track -link" data-gps-track="footer.click({ location: 2, link:4 })" href="https://stackoverflow.blog?blb=1">Blog</a></li>
<li><a href="https://www.facebook.com/officialstackoverflow/" class="-link js-gps-track" data-gps-track="footer.click({ location: 2, link: 31 })">Facebook</a></li>
<li><a href="https://twitter.com/stackoverflow" class="-link js-gps-track" data-gps-track="footer.click({ location: 2, link: 32 })">Twitter</a></li>
<li><a href="https://linkedin.com/company/stack-overflow" class="-link js-gps-track" data-gps-track="footer.click({ location: 2, link: 33 })">LinkedIn</a></li>
<li><a href="https://www.instagram.com/thestackoverflow" class="-link js-gps-track" data-gps-track="footer.click({ location: 2, link: 36 })">Instagram</a></li>
</ul>
<p class="md:mb0">
Site design / logo &#169; 2024 Stack Exchange Inc; user contributions licensed under <span class='td-underline'><a href="https://stackoverflow.com/help/licensing">CC BY-SA</a></span>. <span id="svnrev">rev&nbsp;2024.3.5.5754</span>
</p>
</div>
</div>
</footer>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-WCZ03SZFCQ"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() { dataLayer.push(arguments); }
</script>
<script>
StackExchange.ready(function() {
var ga3Settings = {
autoLink: ["stackoverflow.blog","info.stackoverflowsolutions.com","stackoverflowsolutions.com"],
sendTitles: true,
tracker: window.ga,
trackingCodes: [
'UA-108242619-1'
],
checkDimension: 'dimension42'
};
var customGA4Dimensions = {};
customGA4Dimensions["routename"] = "Questions/Show";
customGA4Dimensions["post_id"] = "16778667";
customGA4Dimensions["tags"] = "|bash|sed|escaping|";
var ga4Settings = {
tracker: gtag,
trackingCodes: [
'G-WCZ03SZFCQ'
],
consentsToPerformanceCookies: "denied",
consentsToTargetingCookies: "denied",
eventParameters: customGA4Dimensions,
checkForAdBlock: true,
sendTitles: true,
trackClicks: false,
};
StackExchange.ga.init({ GA3: ga3Settings, GA4: ga4Settings });
StackExchange.ga.setDimension('dimension2', '|bash|sed|escaping|');
StackExchange.ga.setDimension('dimension3', 'Questions/Show');
StackExchange.ga.setDimension('dimension7', "1709834423.315613565");
StackExchange.ga.trackPageView();
});
</script>
<script src="https://cdn.cookielaw.org/scripttemplates/otSDKStub.js" charset="UTF-8" data-document-language="false" data-domain-script="c3d9f1e3-55f3-4eba-b268-46cee4c6789c"></script>
</body>
</html>