search column 2 in csv file for value, if value, then insert âinvalidâ and shift cells right
Clash Royale CLAN TAG#URR8PPP
up vote
3
down vote
favorite
I have csv file that is auto generated by a script but for some of the records (line items) received I need to search column 2 and if the values contains "*.app" I need to print "INVALID" into column 2 for all records matching and shift cells to the right.
Example Data File:
DOM,PROJ,APP,USER,DATE,TIME,STATUS
www,test,biz.app,bob,6-1-18,09:33,OK //Example of good line
www,biz.app,tony,7-11-17,06:22,ok //Example of bad line
...
Wanted output:
DOM,PROJ,APP,USER,DATE,TIME,STATUS
www,test,biz.app,bob,6-1-18,09:33,OK
www,INVALID,biz.app,tony,7-11-17,06:22,ok //Example of fixed line
...
I have unsuccessfully tried awk, sed, and if statement but not getting the results I need
e.g.
if [ awk -F',' ' print $2 < FILE' ] == "*.app" ; then ; echo "INVALID"; fi
Which is obviously terrible... New to bash thanks all!
text-processing awk csv columns
add a comment |Â
up vote
3
down vote
favorite
I have csv file that is auto generated by a script but for some of the records (line items) received I need to search column 2 and if the values contains "*.app" I need to print "INVALID" into column 2 for all records matching and shift cells to the right.
Example Data File:
DOM,PROJ,APP,USER,DATE,TIME,STATUS
www,test,biz.app,bob,6-1-18,09:33,OK //Example of good line
www,biz.app,tony,7-11-17,06:22,ok //Example of bad line
...
Wanted output:
DOM,PROJ,APP,USER,DATE,TIME,STATUS
www,test,biz.app,bob,6-1-18,09:33,OK
www,INVALID,biz.app,tony,7-11-17,06:22,ok //Example of fixed line
...
I have unsuccessfully tried awk, sed, and if statement but not getting the results I need
e.g.
if [ awk -F',' ' print $2 < FILE' ] == "*.app" ; then ; echo "INVALID"; fi
Which is obviously terrible... New to bash thanks all!
text-processing awk csv columns
add a comment |Â
up vote
3
down vote
favorite
up vote
3
down vote
favorite
I have csv file that is auto generated by a script but for some of the records (line items) received I need to search column 2 and if the values contains "*.app" I need to print "INVALID" into column 2 for all records matching and shift cells to the right.
Example Data File:
DOM,PROJ,APP,USER,DATE,TIME,STATUS
www,test,biz.app,bob,6-1-18,09:33,OK //Example of good line
www,biz.app,tony,7-11-17,06:22,ok //Example of bad line
...
Wanted output:
DOM,PROJ,APP,USER,DATE,TIME,STATUS
www,test,biz.app,bob,6-1-18,09:33,OK
www,INVALID,biz.app,tony,7-11-17,06:22,ok //Example of fixed line
...
I have unsuccessfully tried awk, sed, and if statement but not getting the results I need
e.g.
if [ awk -F',' ' print $2 < FILE' ] == "*.app" ; then ; echo "INVALID"; fi
Which is obviously terrible... New to bash thanks all!
text-processing awk csv columns
I have csv file that is auto generated by a script but for some of the records (line items) received I need to search column 2 and if the values contains "*.app" I need to print "INVALID" into column 2 for all records matching and shift cells to the right.
Example Data File:
DOM,PROJ,APP,USER,DATE,TIME,STATUS
www,test,biz.app,bob,6-1-18,09:33,OK //Example of good line
www,biz.app,tony,7-11-17,06:22,ok //Example of bad line
...
Wanted output:
DOM,PROJ,APP,USER,DATE,TIME,STATUS
www,test,biz.app,bob,6-1-18,09:33,OK
www,INVALID,biz.app,tony,7-11-17,06:22,ok //Example of fixed line
...
I have unsuccessfully tried awk, sed, and if statement but not getting the results I need
e.g.
if [ awk -F',' ' print $2 < FILE' ] == "*.app" ; then ; echo "INVALID"; fi
Which is obviously terrible... New to bash thanks all!
text-processing awk csv columns
edited Jun 25 at 19:51
Jeff Schaller
30.8k846104
30.8k846104
asked Jun 25 at 19:45
SSDdude
544
544
add a comment |Â
add a comment |Â
3 Answers
3
active
oldest
votes
up vote
0
down vote
awk -F, -vOFS=, '$2 ~ /.app$/ for (i = NF + 1; i > 2; --i) $i = $(i-1); $2 = "INVALID" 1' file >newfile
This would create newfile
from file
. The awk
command sets both the input and output field delimiter to a comma, then tests the value of column two against a regular expression which matches the string .app
at the end of the value. If the test succeeds, the record's fields are shifted right one step to make place for the string INVALID
as the new second field.
The trailing 1
could be replaced by print
(it causes every line to be outputted).
With the given example data, the output file would contain
DOM,PROJ,APP,USER,DATE,TIME,STATUS
www,test,biz.app,bob,6-1-18,09:33,OK
www,INVALID,biz.app,tony,7-11-17,06:22,ok
Thanks so much Kusalananda, this works great! Can you tell me how to modify this command so that when the value ".app" is found in column 2 it does not shift the cells right but rather replaces .app with INVALID?
â SSDdude
Jun 26 at 16:15
@SSDdude Just remove thefor
loop:$2 = "INVALID"
. Keep the rest as is.
â Kusalananda
Jun 26 at 16:16
Sorry I don't fully understand... if I remove $2 = "INVALID" how will the code replace .app with INVALID?
â SSDdude
Jun 26 at 16:20
@SSDdude No, that's what you are left with if you remove thefor
loop. The complete command:awk -F, -vOFS=, '$2 ~ /.app$/ $2 = "INVALID 1'
â Kusalananda
Jun 26 at 17:26
add a comment |Â
up vote
0
down vote
Awk
approach:
awk 'BEGIN FS = OFS = "," NR > 1 && $2 ~ /.*.app/ $2 = "INVALID" OFS $2 1' file
NR > 1 && $2 ~ /.*.app/
- if record number is greater than1
(all but first) and the 2nd field$2
matchs the pattern/.*.app/
The output:
DOM,PROJ,APP,USER,DATE,TIME,STATUS
www,test,biz.app,bob,6-1-18,09:33,OK
www,INVALID,biz.app,tony,7-11-17,06:22,ok
Hey Roman thanks for the answer but this doesn't shift biz.app to the right it replaces the value with INVALD but does not align the other columns. Any idea how I can do this? Thanks!
â SSDdude
Jun 25 at 20:08
@SSDdude, see my update
â RomanPerekhrest
Jun 25 at 20:10
Hey Roman thanks again... this works great for everything but the first record (new test had bad line as first line).. I tried modifying your awk statement but couldn't figure out how to NOT IGNORE the first records if the second cell contains .app... Thoughts? THANKS!
â SSDdude
Jun 25 at 20:26
@SSDdude, your new conditions seem to be unclear. My approach provides the current expected output. Extend your question with full input fragment and respective output.
â RomanPerekhrest
Jun 26 at 5:13
add a comment |Â
up vote
0
down vote
Using the GNU sed
tool we can approach this problem as follows:
sed -e '
1!s/,/n&/2
/.appn/s/,/,INVALID,/
s/n//
' file.csv
To be read as:
ð Only for lines that are not the first, meaning, skip the header from being considered for processing, whilst for the others, place a marker at the second occurrence of the comma.
ð Any line that has the 2nd field terminating in a .app append the string INVALID after the first field.
ð Now take away the marker.
ð N. B. Lines whose 2nd field doesn't comprise *.app are passed on unmodified.
add a comment |Â
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
awk -F, -vOFS=, '$2 ~ /.app$/ for (i = NF + 1; i > 2; --i) $i = $(i-1); $2 = "INVALID" 1' file >newfile
This would create newfile
from file
. The awk
command sets both the input and output field delimiter to a comma, then tests the value of column two against a regular expression which matches the string .app
at the end of the value. If the test succeeds, the record's fields are shifted right one step to make place for the string INVALID
as the new second field.
The trailing 1
could be replaced by print
(it causes every line to be outputted).
With the given example data, the output file would contain
DOM,PROJ,APP,USER,DATE,TIME,STATUS
www,test,biz.app,bob,6-1-18,09:33,OK
www,INVALID,biz.app,tony,7-11-17,06:22,ok
Thanks so much Kusalananda, this works great! Can you tell me how to modify this command so that when the value ".app" is found in column 2 it does not shift the cells right but rather replaces .app with INVALID?
â SSDdude
Jun 26 at 16:15
@SSDdude Just remove thefor
loop:$2 = "INVALID"
. Keep the rest as is.
â Kusalananda
Jun 26 at 16:16
Sorry I don't fully understand... if I remove $2 = "INVALID" how will the code replace .app with INVALID?
â SSDdude
Jun 26 at 16:20
@SSDdude No, that's what you are left with if you remove thefor
loop. The complete command:awk -F, -vOFS=, '$2 ~ /.app$/ $2 = "INVALID 1'
â Kusalananda
Jun 26 at 17:26
add a comment |Â
up vote
0
down vote
awk -F, -vOFS=, '$2 ~ /.app$/ for (i = NF + 1; i > 2; --i) $i = $(i-1); $2 = "INVALID" 1' file >newfile
This would create newfile
from file
. The awk
command sets both the input and output field delimiter to a comma, then tests the value of column two against a regular expression which matches the string .app
at the end of the value. If the test succeeds, the record's fields are shifted right one step to make place for the string INVALID
as the new second field.
The trailing 1
could be replaced by print
(it causes every line to be outputted).
With the given example data, the output file would contain
DOM,PROJ,APP,USER,DATE,TIME,STATUS
www,test,biz.app,bob,6-1-18,09:33,OK
www,INVALID,biz.app,tony,7-11-17,06:22,ok
Thanks so much Kusalananda, this works great! Can you tell me how to modify this command so that when the value ".app" is found in column 2 it does not shift the cells right but rather replaces .app with INVALID?
â SSDdude
Jun 26 at 16:15
@SSDdude Just remove thefor
loop:$2 = "INVALID"
. Keep the rest as is.
â Kusalananda
Jun 26 at 16:16
Sorry I don't fully understand... if I remove $2 = "INVALID" how will the code replace .app with INVALID?
â SSDdude
Jun 26 at 16:20
@SSDdude No, that's what you are left with if you remove thefor
loop. The complete command:awk -F, -vOFS=, '$2 ~ /.app$/ $2 = "INVALID 1'
â Kusalananda
Jun 26 at 17:26
add a comment |Â
up vote
0
down vote
up vote
0
down vote
awk -F, -vOFS=, '$2 ~ /.app$/ for (i = NF + 1; i > 2; --i) $i = $(i-1); $2 = "INVALID" 1' file >newfile
This would create newfile
from file
. The awk
command sets both the input and output field delimiter to a comma, then tests the value of column two against a regular expression which matches the string .app
at the end of the value. If the test succeeds, the record's fields are shifted right one step to make place for the string INVALID
as the new second field.
The trailing 1
could be replaced by print
(it causes every line to be outputted).
With the given example data, the output file would contain
DOM,PROJ,APP,USER,DATE,TIME,STATUS
www,test,biz.app,bob,6-1-18,09:33,OK
www,INVALID,biz.app,tony,7-11-17,06:22,ok
awk -F, -vOFS=, '$2 ~ /.app$/ for (i = NF + 1; i > 2; --i) $i = $(i-1); $2 = "INVALID" 1' file >newfile
This would create newfile
from file
. The awk
command sets both the input and output field delimiter to a comma, then tests the value of column two against a regular expression which matches the string .app
at the end of the value. If the test succeeds, the record's fields are shifted right one step to make place for the string INVALID
as the new second field.
The trailing 1
could be replaced by print
(it causes every line to be outputted).
With the given example data, the output file would contain
DOM,PROJ,APP,USER,DATE,TIME,STATUS
www,test,biz.app,bob,6-1-18,09:33,OK
www,INVALID,biz.app,tony,7-11-17,06:22,ok
edited Jun 25 at 20:10
answered Jun 25 at 19:55
Kusalananda
101k13199312
101k13199312
Thanks so much Kusalananda, this works great! Can you tell me how to modify this command so that when the value ".app" is found in column 2 it does not shift the cells right but rather replaces .app with INVALID?
â SSDdude
Jun 26 at 16:15
@SSDdude Just remove thefor
loop:$2 = "INVALID"
. Keep the rest as is.
â Kusalananda
Jun 26 at 16:16
Sorry I don't fully understand... if I remove $2 = "INVALID" how will the code replace .app with INVALID?
â SSDdude
Jun 26 at 16:20
@SSDdude No, that's what you are left with if you remove thefor
loop. The complete command:awk -F, -vOFS=, '$2 ~ /.app$/ $2 = "INVALID 1'
â Kusalananda
Jun 26 at 17:26
add a comment |Â
Thanks so much Kusalananda, this works great! Can you tell me how to modify this command so that when the value ".app" is found in column 2 it does not shift the cells right but rather replaces .app with INVALID?
â SSDdude
Jun 26 at 16:15
@SSDdude Just remove thefor
loop:$2 = "INVALID"
. Keep the rest as is.
â Kusalananda
Jun 26 at 16:16
Sorry I don't fully understand... if I remove $2 = "INVALID" how will the code replace .app with INVALID?
â SSDdude
Jun 26 at 16:20
@SSDdude No, that's what you are left with if you remove thefor
loop. The complete command:awk -F, -vOFS=, '$2 ~ /.app$/ $2 = "INVALID 1'
â Kusalananda
Jun 26 at 17:26
Thanks so much Kusalananda, this works great! Can you tell me how to modify this command so that when the value ".app" is found in column 2 it does not shift the cells right but rather replaces .app with INVALID?
â SSDdude
Jun 26 at 16:15
Thanks so much Kusalananda, this works great! Can you tell me how to modify this command so that when the value ".app" is found in column 2 it does not shift the cells right but rather replaces .app with INVALID?
â SSDdude
Jun 26 at 16:15
@SSDdude Just remove the
for
loop: $2 = "INVALID"
. Keep the rest as is.â Kusalananda
Jun 26 at 16:16
@SSDdude Just remove the
for
loop: $2 = "INVALID"
. Keep the rest as is.â Kusalananda
Jun 26 at 16:16
Sorry I don't fully understand... if I remove $2 = "INVALID" how will the code replace .app with INVALID?
â SSDdude
Jun 26 at 16:20
Sorry I don't fully understand... if I remove $2 = "INVALID" how will the code replace .app with INVALID?
â SSDdude
Jun 26 at 16:20
@SSDdude No, that's what you are left with if you remove the
for
loop. The complete command: awk -F, -vOFS=, '$2 ~ /.app$/ $2 = "INVALID 1'
â Kusalananda
Jun 26 at 17:26
@SSDdude No, that's what you are left with if you remove the
for
loop. The complete command: awk -F, -vOFS=, '$2 ~ /.app$/ $2 = "INVALID 1'
â Kusalananda
Jun 26 at 17:26
add a comment |Â
up vote
0
down vote
Awk
approach:
awk 'BEGIN FS = OFS = "," NR > 1 && $2 ~ /.*.app/ $2 = "INVALID" OFS $2 1' file
NR > 1 && $2 ~ /.*.app/
- if record number is greater than1
(all but first) and the 2nd field$2
matchs the pattern/.*.app/
The output:
DOM,PROJ,APP,USER,DATE,TIME,STATUS
www,test,biz.app,bob,6-1-18,09:33,OK
www,INVALID,biz.app,tony,7-11-17,06:22,ok
Hey Roman thanks for the answer but this doesn't shift biz.app to the right it replaces the value with INVALD but does not align the other columns. Any idea how I can do this? Thanks!
â SSDdude
Jun 25 at 20:08
@SSDdude, see my update
â RomanPerekhrest
Jun 25 at 20:10
Hey Roman thanks again... this works great for everything but the first record (new test had bad line as first line).. I tried modifying your awk statement but couldn't figure out how to NOT IGNORE the first records if the second cell contains .app... Thoughts? THANKS!
â SSDdude
Jun 25 at 20:26
@SSDdude, your new conditions seem to be unclear. My approach provides the current expected output. Extend your question with full input fragment and respective output.
â RomanPerekhrest
Jun 26 at 5:13
add a comment |Â
up vote
0
down vote
Awk
approach:
awk 'BEGIN FS = OFS = "," NR > 1 && $2 ~ /.*.app/ $2 = "INVALID" OFS $2 1' file
NR > 1 && $2 ~ /.*.app/
- if record number is greater than1
(all but first) and the 2nd field$2
matchs the pattern/.*.app/
The output:
DOM,PROJ,APP,USER,DATE,TIME,STATUS
www,test,biz.app,bob,6-1-18,09:33,OK
www,INVALID,biz.app,tony,7-11-17,06:22,ok
Hey Roman thanks for the answer but this doesn't shift biz.app to the right it replaces the value with INVALD but does not align the other columns. Any idea how I can do this? Thanks!
â SSDdude
Jun 25 at 20:08
@SSDdude, see my update
â RomanPerekhrest
Jun 25 at 20:10
Hey Roman thanks again... this works great for everything but the first record (new test had bad line as first line).. I tried modifying your awk statement but couldn't figure out how to NOT IGNORE the first records if the second cell contains .app... Thoughts? THANKS!
â SSDdude
Jun 25 at 20:26
@SSDdude, your new conditions seem to be unclear. My approach provides the current expected output. Extend your question with full input fragment and respective output.
â RomanPerekhrest
Jun 26 at 5:13
add a comment |Â
up vote
0
down vote
up vote
0
down vote
Awk
approach:
awk 'BEGIN FS = OFS = "," NR > 1 && $2 ~ /.*.app/ $2 = "INVALID" OFS $2 1' file
NR > 1 && $2 ~ /.*.app/
- if record number is greater than1
(all but first) and the 2nd field$2
matchs the pattern/.*.app/
The output:
DOM,PROJ,APP,USER,DATE,TIME,STATUS
www,test,biz.app,bob,6-1-18,09:33,OK
www,INVALID,biz.app,tony,7-11-17,06:22,ok
Awk
approach:
awk 'BEGIN FS = OFS = "," NR > 1 && $2 ~ /.*.app/ $2 = "INVALID" OFS $2 1' file
NR > 1 && $2 ~ /.*.app/
- if record number is greater than1
(all but first) and the 2nd field$2
matchs the pattern/.*.app/
The output:
DOM,PROJ,APP,USER,DATE,TIME,STATUS
www,test,biz.app,bob,6-1-18,09:33,OK
www,INVALID,biz.app,tony,7-11-17,06:22,ok
edited Jun 25 at 20:10
answered Jun 25 at 19:57
RomanPerekhrest
22.4k12144
22.4k12144
Hey Roman thanks for the answer but this doesn't shift biz.app to the right it replaces the value with INVALD but does not align the other columns. Any idea how I can do this? Thanks!
â SSDdude
Jun 25 at 20:08
@SSDdude, see my update
â RomanPerekhrest
Jun 25 at 20:10
Hey Roman thanks again... this works great for everything but the first record (new test had bad line as first line).. I tried modifying your awk statement but couldn't figure out how to NOT IGNORE the first records if the second cell contains .app... Thoughts? THANKS!
â SSDdude
Jun 25 at 20:26
@SSDdude, your new conditions seem to be unclear. My approach provides the current expected output. Extend your question with full input fragment and respective output.
â RomanPerekhrest
Jun 26 at 5:13
add a comment |Â
Hey Roman thanks for the answer but this doesn't shift biz.app to the right it replaces the value with INVALD but does not align the other columns. Any idea how I can do this? Thanks!
â SSDdude
Jun 25 at 20:08
@SSDdude, see my update
â RomanPerekhrest
Jun 25 at 20:10
Hey Roman thanks again... this works great for everything but the first record (new test had bad line as first line).. I tried modifying your awk statement but couldn't figure out how to NOT IGNORE the first records if the second cell contains .app... Thoughts? THANKS!
â SSDdude
Jun 25 at 20:26
@SSDdude, your new conditions seem to be unclear. My approach provides the current expected output. Extend your question with full input fragment and respective output.
â RomanPerekhrest
Jun 26 at 5:13
Hey Roman thanks for the answer but this doesn't shift biz.app to the right it replaces the value with INVALD but does not align the other columns. Any idea how I can do this? Thanks!
â SSDdude
Jun 25 at 20:08
Hey Roman thanks for the answer but this doesn't shift biz.app to the right it replaces the value with INVALD but does not align the other columns. Any idea how I can do this? Thanks!
â SSDdude
Jun 25 at 20:08
@SSDdude, see my update
â RomanPerekhrest
Jun 25 at 20:10
@SSDdude, see my update
â RomanPerekhrest
Jun 25 at 20:10
Hey Roman thanks again... this works great for everything but the first record (new test had bad line as first line).. I tried modifying your awk statement but couldn't figure out how to NOT IGNORE the first records if the second cell contains .app... Thoughts? THANKS!
â SSDdude
Jun 25 at 20:26
Hey Roman thanks again... this works great for everything but the first record (new test had bad line as first line).. I tried modifying your awk statement but couldn't figure out how to NOT IGNORE the first records if the second cell contains .app... Thoughts? THANKS!
â SSDdude
Jun 25 at 20:26
@SSDdude, your new conditions seem to be unclear. My approach provides the current expected output. Extend your question with full input fragment and respective output.
â RomanPerekhrest
Jun 26 at 5:13
@SSDdude, your new conditions seem to be unclear. My approach provides the current expected output. Extend your question with full input fragment and respective output.
â RomanPerekhrest
Jun 26 at 5:13
add a comment |Â
up vote
0
down vote
Using the GNU sed
tool we can approach this problem as follows:
sed -e '
1!s/,/n&/2
/.appn/s/,/,INVALID,/
s/n//
' file.csv
To be read as:
ð Only for lines that are not the first, meaning, skip the header from being considered for processing, whilst for the others, place a marker at the second occurrence of the comma.
ð Any line that has the 2nd field terminating in a .app append the string INVALID after the first field.
ð Now take away the marker.
ð N. B. Lines whose 2nd field doesn't comprise *.app are passed on unmodified.
add a comment |Â
up vote
0
down vote
Using the GNU sed
tool we can approach this problem as follows:
sed -e '
1!s/,/n&/2
/.appn/s/,/,INVALID,/
s/n//
' file.csv
To be read as:
ð Only for lines that are not the first, meaning, skip the header from being considered for processing, whilst for the others, place a marker at the second occurrence of the comma.
ð Any line that has the 2nd field terminating in a .app append the string INVALID after the first field.
ð Now take away the marker.
ð N. B. Lines whose 2nd field doesn't comprise *.app are passed on unmodified.
add a comment |Â
up vote
0
down vote
up vote
0
down vote
Using the GNU sed
tool we can approach this problem as follows:
sed -e '
1!s/,/n&/2
/.appn/s/,/,INVALID,/
s/n//
' file.csv
To be read as:
ð Only for lines that are not the first, meaning, skip the header from being considered for processing, whilst for the others, place a marker at the second occurrence of the comma.
ð Any line that has the 2nd field terminating in a .app append the string INVALID after the first field.
ð Now take away the marker.
ð N. B. Lines whose 2nd field doesn't comprise *.app are passed on unmodified.
Using the GNU sed
tool we can approach this problem as follows:
sed -e '
1!s/,/n&/2
/.appn/s/,/,INVALID,/
s/n//
' file.csv
To be read as:
ð Only for lines that are not the first, meaning, skip the header from being considered for processing, whilst for the others, place a marker at the second occurrence of the comma.
ð Any line that has the 2nd field terminating in a .app append the string INVALID after the first field.
ð Now take away the marker.
ð N. B. Lines whose 2nd field doesn't comprise *.app are passed on unmodified.
edited Jun 26 at 2:40
answered Jun 26 at 2:34
Rakesh Sharma
11013
11013
add a comment |Â
add a comment |Â
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
StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2funix.stackexchange.com%2fquestions%2f451838%2fsearch-column-2-in-csv-file-for-value-if-value-then-insert-invalid-and-shift%23new-answer', 'question_page');
);
Post as a guest
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
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
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