sed replacing character in a fileRead character encoding with sedReplacing dots (.) in sedsed command replace text with ' characterReplacing a string by a file using Sedremove special character using sedReplacing a Substring with sedReplacing a string with quotes selectively using sedSed script crashing on big filewhy sed is not replacing special character <
Fasteners for securing cabinets together
What was the motivation for the invention of electric pianos?
Make 2019 with single digits
Consonance v. Dissonance
Reading double values from a text file
Mass extinction because of too low CO2-lewels
How can I discourage sharing internal API keys within a company?
2000s space film where an alien species has almost wiped out the human race in a war
I am getting "syntax error near unexpected token `'$#''" in a simple Bash script
Parallel resistance in electric circuits
What explanation do proponents of a Scotland-NI bridge give for it breaking Brexit impasse?
sed replacing character in a file
Why don't airports use arresting gears to recover energy from landing passenger planes?
Can I tap all my opponent's lands while they're casting a spell to negate it?
How to publish superseding results without creating enemies
Telling my mother that I have anorexia without panicking her
Python web-scraper to download table of transistor counts from Wikipedia
Why is my fire extinguisher emptied after one use?
What was the ultimate objective of The Party in 1984?
How offensive is the French word "femmelette" considered to be?
Would it be unbalanced to increase Wild Shape uses based on level?
What officially disallows US presidents from driving?
Are there any rules about taking damage whilst holding your breath in combat?
How does a simple logistic regression model achieve a 92% classification accuracy on MNIST?
sed replacing character in a file
Read character encoding with sedReplacing dots (.) in sedsed command replace text with ' characterReplacing a string by a file using Sedremove special character using sedReplacing a Substring with sedReplacing a string with quotes selectively using sedSed script crashing on big filewhy sed is not replacing special character <
.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty margin-bottom:0;
I need to replace a single character in a/etc/request-key.conf
The file format is;
###############################################################################
#
# Copyright (C) 2005 Red Hat, Inc. All Rights Reserved.
# Written by David Howells (dhowells@redhat.com)
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version
# 2 of the License, or (at your option) any later version.
#
###############################################################################
###############################################################################
#
# We can run programs or scripts
# - Macro substitutions in arguments:
# %%... %...
# %o operation name
# %k ID of key being operated upon
# %t type of key being operated upon
# %d description of key being operated upon
# %c callout info
# %u UID of requestor
# %g GID of requestor
# %T thread keyring of requestor (may be 0)
# %P process keyring of requestor (may be 0)
# %S session keyring of requestor (may be the user's default session)
#
################################################################################
#OP TYPE DESCRIPTION CALLOUT INFO PROGRAM ARG1 ARG2 ARG3 ...
#====== ======= =============== =============== ===============================
create dns_resolver * * /sbin/key.dns_resolver %k
create user debug:* negate /bin/keyctl negate %k 30 %S
create user debug:* rejected /bin/keyctl reject %k 30 %c %S
create user debug:* expired /bin/keyctl reject %k 30 %c %S
create user debug:* revoked /bin/keyctl reject %k 30 %c %S
create user debug:loop:* * |/bin/cat
create user debug:* * /usr/share/keyutils/request-key-debug.sh %k %d %c %S
create cifs.spnego * * /usr/sbin/cifs.upcall -c %k
create dns_resolver * * /usr/sbin/cifs.upcall %k
negate * * * /bin/keyctl negate %k 30 %S
So I need the 3rd last line to go from;
create cifs.spnego * * /usr/sbin/cifs.upcall -c %k
to;
create cifs.spnego * * /usr/sbin/cifs.upcall -t %k
I have tried;
sed -i 's/^(create cifs.spnego *cifs.upcall) (%k)/1 -t 2/' /etc/request-key.conf
Bu treally I just need to replace the -c with a -t
command-line text-processing sed
add a comment
|
I need to replace a single character in a/etc/request-key.conf
The file format is;
###############################################################################
#
# Copyright (C) 2005 Red Hat, Inc. All Rights Reserved.
# Written by David Howells (dhowells@redhat.com)
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version
# 2 of the License, or (at your option) any later version.
#
###############################################################################
###############################################################################
#
# We can run programs or scripts
# - Macro substitutions in arguments:
# %%... %...
# %o operation name
# %k ID of key being operated upon
# %t type of key being operated upon
# %d description of key being operated upon
# %c callout info
# %u UID of requestor
# %g GID of requestor
# %T thread keyring of requestor (may be 0)
# %P process keyring of requestor (may be 0)
# %S session keyring of requestor (may be the user's default session)
#
################################################################################
#OP TYPE DESCRIPTION CALLOUT INFO PROGRAM ARG1 ARG2 ARG3 ...
#====== ======= =============== =============== ===============================
create dns_resolver * * /sbin/key.dns_resolver %k
create user debug:* negate /bin/keyctl negate %k 30 %S
create user debug:* rejected /bin/keyctl reject %k 30 %c %S
create user debug:* expired /bin/keyctl reject %k 30 %c %S
create user debug:* revoked /bin/keyctl reject %k 30 %c %S
create user debug:loop:* * |/bin/cat
create user debug:* * /usr/share/keyutils/request-key-debug.sh %k %d %c %S
create cifs.spnego * * /usr/sbin/cifs.upcall -c %k
create dns_resolver * * /usr/sbin/cifs.upcall %k
negate * * * /bin/keyctl negate %k 30 %S
So I need the 3rd last line to go from;
create cifs.spnego * * /usr/sbin/cifs.upcall -c %k
to;
create cifs.spnego * * /usr/sbin/cifs.upcall -t %k
I have tried;
sed -i 's/^(create cifs.spnego *cifs.upcall) (%k)/1 -t 2/' /etc/request-key.conf
Bu treally I just need to replace the -c with a -t
command-line text-processing sed
add a comment
|
I need to replace a single character in a/etc/request-key.conf
The file format is;
###############################################################################
#
# Copyright (C) 2005 Red Hat, Inc. All Rights Reserved.
# Written by David Howells (dhowells@redhat.com)
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version
# 2 of the License, or (at your option) any later version.
#
###############################################################################
###############################################################################
#
# We can run programs or scripts
# - Macro substitutions in arguments:
# %%... %...
# %o operation name
# %k ID of key being operated upon
# %t type of key being operated upon
# %d description of key being operated upon
# %c callout info
# %u UID of requestor
# %g GID of requestor
# %T thread keyring of requestor (may be 0)
# %P process keyring of requestor (may be 0)
# %S session keyring of requestor (may be the user's default session)
#
################################################################################
#OP TYPE DESCRIPTION CALLOUT INFO PROGRAM ARG1 ARG2 ARG3 ...
#====== ======= =============== =============== ===============================
create dns_resolver * * /sbin/key.dns_resolver %k
create user debug:* negate /bin/keyctl negate %k 30 %S
create user debug:* rejected /bin/keyctl reject %k 30 %c %S
create user debug:* expired /bin/keyctl reject %k 30 %c %S
create user debug:* revoked /bin/keyctl reject %k 30 %c %S
create user debug:loop:* * |/bin/cat
create user debug:* * /usr/share/keyutils/request-key-debug.sh %k %d %c %S
create cifs.spnego * * /usr/sbin/cifs.upcall -c %k
create dns_resolver * * /usr/sbin/cifs.upcall %k
negate * * * /bin/keyctl negate %k 30 %S
So I need the 3rd last line to go from;
create cifs.spnego * * /usr/sbin/cifs.upcall -c %k
to;
create cifs.spnego * * /usr/sbin/cifs.upcall -t %k
I have tried;
sed -i 's/^(create cifs.spnego *cifs.upcall) (%k)/1 -t 2/' /etc/request-key.conf
Bu treally I just need to replace the -c with a -t
command-line text-processing sed
I need to replace a single character in a/etc/request-key.conf
The file format is;
###############################################################################
#
# Copyright (C) 2005 Red Hat, Inc. All Rights Reserved.
# Written by David Howells (dhowells@redhat.com)
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version
# 2 of the License, or (at your option) any later version.
#
###############################################################################
###############################################################################
#
# We can run programs or scripts
# - Macro substitutions in arguments:
# %%... %...
# %o operation name
# %k ID of key being operated upon
# %t type of key being operated upon
# %d description of key being operated upon
# %c callout info
# %u UID of requestor
# %g GID of requestor
# %T thread keyring of requestor (may be 0)
# %P process keyring of requestor (may be 0)
# %S session keyring of requestor (may be the user's default session)
#
################################################################################
#OP TYPE DESCRIPTION CALLOUT INFO PROGRAM ARG1 ARG2 ARG3 ...
#====== ======= =============== =============== ===============================
create dns_resolver * * /sbin/key.dns_resolver %k
create user debug:* negate /bin/keyctl negate %k 30 %S
create user debug:* rejected /bin/keyctl reject %k 30 %c %S
create user debug:* expired /bin/keyctl reject %k 30 %c %S
create user debug:* revoked /bin/keyctl reject %k 30 %c %S
create user debug:loop:* * |/bin/cat
create user debug:* * /usr/share/keyutils/request-key-debug.sh %k %d %c %S
create cifs.spnego * * /usr/sbin/cifs.upcall -c %k
create dns_resolver * * /usr/sbin/cifs.upcall %k
negate * * * /bin/keyctl negate %k 30 %S
So I need the 3rd last line to go from;
create cifs.spnego * * /usr/sbin/cifs.upcall -c %k
to;
create cifs.spnego * * /usr/sbin/cifs.upcall -t %k
I have tried;
sed -i 's/^(create cifs.spnego *cifs.upcall) (%k)/1 -t 2/' /etc/request-key.conf
Bu treally I just need to replace the -c with a -t
command-line text-processing sed
command-line text-processing sed
edited 7 hours ago
WinEunuuchs2Unix
58.1k17 gold badges117 silver badges228 bronze badges
58.1k17 gold badges117 silver badges228 bronze badges
asked 8 hours ago
eekfonkyeekfonky
2252 gold badges3 silver badges10 bronze badges
2252 gold badges3 silver badges10 bronze badges
add a comment
|
add a comment
|
1 Answer
1
active
oldest
votes
The golden rule in regular expressions is: less is more. Always try and find the simplest expression that is sufficient to target your search string. So instead of trying to match the entire line, look for a small, but unique, string:
$ grep -- -c file
create cifs.spnego * * /usr/sbin/cifs.upcall -c %k
I saved your file as file and, as you can see, there is only one case of -c in the file. So all you need is (note the -i.bak, that will create a backup file):
sed -i.bak 's/-c/-t/' /etc/request-key.conf
If you want to be more prudent and make sure you match only your target line without searching first, just change the -c on any lines starting with create cifs.spnego. Note the use of -E for extended regular expressions and using s+ (1 or more whitespace) instead of trying to write multiple spaces:
sed -Ei.bak 's/^(creates+cifs.spnego.*cifs.upcalls+)-c/1 -t/' /etc/request-key.conf
Since you don't need to make any changes after the -c, there is no reason to try and match it: less is more.
The reason your attempt failed is because * is a multiplier in regular expressions, it means "0 or more". So when you have cifs.spnego *cifs.upcall, that looks for cifs.spnego, then 0 or more spaces, followed by cifs.upcall. Your line, however, was:
create cifs.spnego * * /usr/sbin/cifs.upcall -t %k
To match that, you need to match cifs.spnego, then a space, then a *, then more spaces, and another *, then /usr/sbin/ and only then do you have cifs.upcall. To match all of those, you would need (you need * to match the character *):
/^create cifs.spnego * * cifs.upcall/
Or, since less is more, simply:
/^create cifs.spnego .*cifs.upcall/
The .* means "anything".
I think you wants/-c/-tnots/-c/-k/if I read the project scope correctly. Still +1 for "less is more".
– WinEunuuchs2Unix
7 hours ago
I often favor separating the context pattern from the replacement pattern in situations like this - for examplesed '/cifs.spnego/ s/-c/-t/'
– steeldriver
7 hours ago
@WinEunuuchs2Unix D'oh! Indeed I do, thanks!
– terdon♦
7 hours ago
@steeldriver yes, that makes a lot of sense.
– terdon♦
7 hours ago
add a comment
|
Your Answer
StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "89"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);
else
createEditor();
);
function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/4.0/"u003ecc by-sa 4.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);
);
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1173963%2fsed-replacing-character-in-a-file%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
The golden rule in regular expressions is: less is more. Always try and find the simplest expression that is sufficient to target your search string. So instead of trying to match the entire line, look for a small, but unique, string:
$ grep -- -c file
create cifs.spnego * * /usr/sbin/cifs.upcall -c %k
I saved your file as file and, as you can see, there is only one case of -c in the file. So all you need is (note the -i.bak, that will create a backup file):
sed -i.bak 's/-c/-t/' /etc/request-key.conf
If you want to be more prudent and make sure you match only your target line without searching first, just change the -c on any lines starting with create cifs.spnego. Note the use of -E for extended regular expressions and using s+ (1 or more whitespace) instead of trying to write multiple spaces:
sed -Ei.bak 's/^(creates+cifs.spnego.*cifs.upcalls+)-c/1 -t/' /etc/request-key.conf
Since you don't need to make any changes after the -c, there is no reason to try and match it: less is more.
The reason your attempt failed is because * is a multiplier in regular expressions, it means "0 or more". So when you have cifs.spnego *cifs.upcall, that looks for cifs.spnego, then 0 or more spaces, followed by cifs.upcall. Your line, however, was:
create cifs.spnego * * /usr/sbin/cifs.upcall -t %k
To match that, you need to match cifs.spnego, then a space, then a *, then more spaces, and another *, then /usr/sbin/ and only then do you have cifs.upcall. To match all of those, you would need (you need * to match the character *):
/^create cifs.spnego * * cifs.upcall/
Or, since less is more, simply:
/^create cifs.spnego .*cifs.upcall/
The .* means "anything".
I think you wants/-c/-tnots/-c/-k/if I read the project scope correctly. Still +1 for "less is more".
– WinEunuuchs2Unix
7 hours ago
I often favor separating the context pattern from the replacement pattern in situations like this - for examplesed '/cifs.spnego/ s/-c/-t/'
– steeldriver
7 hours ago
@WinEunuuchs2Unix D'oh! Indeed I do, thanks!
– terdon♦
7 hours ago
@steeldriver yes, that makes a lot of sense.
– terdon♦
7 hours ago
add a comment
|
The golden rule in regular expressions is: less is more. Always try and find the simplest expression that is sufficient to target your search string. So instead of trying to match the entire line, look for a small, but unique, string:
$ grep -- -c file
create cifs.spnego * * /usr/sbin/cifs.upcall -c %k
I saved your file as file and, as you can see, there is only one case of -c in the file. So all you need is (note the -i.bak, that will create a backup file):
sed -i.bak 's/-c/-t/' /etc/request-key.conf
If you want to be more prudent and make sure you match only your target line without searching first, just change the -c on any lines starting with create cifs.spnego. Note the use of -E for extended regular expressions and using s+ (1 or more whitespace) instead of trying to write multiple spaces:
sed -Ei.bak 's/^(creates+cifs.spnego.*cifs.upcalls+)-c/1 -t/' /etc/request-key.conf
Since you don't need to make any changes after the -c, there is no reason to try and match it: less is more.
The reason your attempt failed is because * is a multiplier in regular expressions, it means "0 or more". So when you have cifs.spnego *cifs.upcall, that looks for cifs.spnego, then 0 or more spaces, followed by cifs.upcall. Your line, however, was:
create cifs.spnego * * /usr/sbin/cifs.upcall -t %k
To match that, you need to match cifs.spnego, then a space, then a *, then more spaces, and another *, then /usr/sbin/ and only then do you have cifs.upcall. To match all of those, you would need (you need * to match the character *):
/^create cifs.spnego * * cifs.upcall/
Or, since less is more, simply:
/^create cifs.spnego .*cifs.upcall/
The .* means "anything".
I think you wants/-c/-tnots/-c/-k/if I read the project scope correctly. Still +1 for "less is more".
– WinEunuuchs2Unix
7 hours ago
I often favor separating the context pattern from the replacement pattern in situations like this - for examplesed '/cifs.spnego/ s/-c/-t/'
– steeldriver
7 hours ago
@WinEunuuchs2Unix D'oh! Indeed I do, thanks!
– terdon♦
7 hours ago
@steeldriver yes, that makes a lot of sense.
– terdon♦
7 hours ago
add a comment
|
The golden rule in regular expressions is: less is more. Always try and find the simplest expression that is sufficient to target your search string. So instead of trying to match the entire line, look for a small, but unique, string:
$ grep -- -c file
create cifs.spnego * * /usr/sbin/cifs.upcall -c %k
I saved your file as file and, as you can see, there is only one case of -c in the file. So all you need is (note the -i.bak, that will create a backup file):
sed -i.bak 's/-c/-t/' /etc/request-key.conf
If you want to be more prudent and make sure you match only your target line without searching first, just change the -c on any lines starting with create cifs.spnego. Note the use of -E for extended regular expressions and using s+ (1 or more whitespace) instead of trying to write multiple spaces:
sed -Ei.bak 's/^(creates+cifs.spnego.*cifs.upcalls+)-c/1 -t/' /etc/request-key.conf
Since you don't need to make any changes after the -c, there is no reason to try and match it: less is more.
The reason your attempt failed is because * is a multiplier in regular expressions, it means "0 or more". So when you have cifs.spnego *cifs.upcall, that looks for cifs.spnego, then 0 or more spaces, followed by cifs.upcall. Your line, however, was:
create cifs.spnego * * /usr/sbin/cifs.upcall -t %k
To match that, you need to match cifs.spnego, then a space, then a *, then more spaces, and another *, then /usr/sbin/ and only then do you have cifs.upcall. To match all of those, you would need (you need * to match the character *):
/^create cifs.spnego * * cifs.upcall/
Or, since less is more, simply:
/^create cifs.spnego .*cifs.upcall/
The .* means "anything".
The golden rule in regular expressions is: less is more. Always try and find the simplest expression that is sufficient to target your search string. So instead of trying to match the entire line, look for a small, but unique, string:
$ grep -- -c file
create cifs.spnego * * /usr/sbin/cifs.upcall -c %k
I saved your file as file and, as you can see, there is only one case of -c in the file. So all you need is (note the -i.bak, that will create a backup file):
sed -i.bak 's/-c/-t/' /etc/request-key.conf
If you want to be more prudent and make sure you match only your target line without searching first, just change the -c on any lines starting with create cifs.spnego. Note the use of -E for extended regular expressions and using s+ (1 or more whitespace) instead of trying to write multiple spaces:
sed -Ei.bak 's/^(creates+cifs.spnego.*cifs.upcalls+)-c/1 -t/' /etc/request-key.conf
Since you don't need to make any changes after the -c, there is no reason to try and match it: less is more.
The reason your attempt failed is because * is a multiplier in regular expressions, it means "0 or more". So when you have cifs.spnego *cifs.upcall, that looks for cifs.spnego, then 0 or more spaces, followed by cifs.upcall. Your line, however, was:
create cifs.spnego * * /usr/sbin/cifs.upcall -t %k
To match that, you need to match cifs.spnego, then a space, then a *, then more spaces, and another *, then /usr/sbin/ and only then do you have cifs.upcall. To match all of those, you would need (you need * to match the character *):
/^create cifs.spnego * * cifs.upcall/
Or, since less is more, simply:
/^create cifs.spnego .*cifs.upcall/
The .* means "anything".
edited 7 hours ago
answered 8 hours ago
terdon♦terdon
73.8k14 gold badges151 silver badges235 bronze badges
73.8k14 gold badges151 silver badges235 bronze badges
I think you wants/-c/-tnots/-c/-k/if I read the project scope correctly. Still +1 for "less is more".
– WinEunuuchs2Unix
7 hours ago
I often favor separating the context pattern from the replacement pattern in situations like this - for examplesed '/cifs.spnego/ s/-c/-t/'
– steeldriver
7 hours ago
@WinEunuuchs2Unix D'oh! Indeed I do, thanks!
– terdon♦
7 hours ago
@steeldriver yes, that makes a lot of sense.
– terdon♦
7 hours ago
add a comment
|
I think you wants/-c/-tnots/-c/-k/if I read the project scope correctly. Still +1 for "less is more".
– WinEunuuchs2Unix
7 hours ago
I often favor separating the context pattern from the replacement pattern in situations like this - for examplesed '/cifs.spnego/ s/-c/-t/'
– steeldriver
7 hours ago
@WinEunuuchs2Unix D'oh! Indeed I do, thanks!
– terdon♦
7 hours ago
@steeldriver yes, that makes a lot of sense.
– terdon♦
7 hours ago
I think you want
s/-c/-t not s/-c/-k/ if I read the project scope correctly. Still +1 for "less is more".– WinEunuuchs2Unix
7 hours ago
I think you want
s/-c/-t not s/-c/-k/ if I read the project scope correctly. Still +1 for "less is more".– WinEunuuchs2Unix
7 hours ago
I often favor separating the context pattern from the replacement pattern in situations like this - for example
sed '/cifs.spnego/ s/-c/-t/'– steeldriver
7 hours ago
I often favor separating the context pattern from the replacement pattern in situations like this - for example
sed '/cifs.spnego/ s/-c/-t/'– steeldriver
7 hours ago
@WinEunuuchs2Unix D'oh! Indeed I do, thanks!
– terdon♦
7 hours ago
@WinEunuuchs2Unix D'oh! Indeed I do, thanks!
– terdon♦
7 hours ago
@steeldriver yes, that makes a lot of sense.
– terdon♦
7 hours ago
@steeldriver yes, that makes a lot of sense.
– terdon♦
7 hours ago
add a comment
|
Thanks for contributing an answer to Ask Ubuntu!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2faskubuntu.com%2fquestions%2f1173963%2fsed-replacing-character-in-a-file%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function ()
StackExchange.helpers.onClickDraftSave('#login-link');
);
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown