How to grep files by regexp and number of lines
I need to grep only files that does not contain use Test::More tests => 1;
string and having more than 10
strings. How to do that ?
Typical solution for printing file names without match is using grep -L
flag and typical solution for counting line numbers is using wc -l
. But how to combine them ?
grep -rL "use Test::More tests => 1;" t | wc -l
is showing just number of results in grep output.
bash
add a comment |
I need to grep only files that does not contain use Test::More tests => 1;
string and having more than 10
strings. How to do that ?
Typical solution for printing file names without match is using grep -L
flag and typical solution for counting line numbers is using wc -l
. But how to combine them ?
grep -rL "use Test::More tests => 1;" t | wc -l
is showing just number of results in grep output.
bash
By "having more than 10 strings", do you mean more than ten lines? If not, can you clarify? Do you mean more than ten lines of distinct code?
– Paul Hodges
Nov 20 '18 at 15:15
add a comment |
I need to grep only files that does not contain use Test::More tests => 1;
string and having more than 10
strings. How to do that ?
Typical solution for printing file names without match is using grep -L
flag and typical solution for counting line numbers is using wc -l
. But how to combine them ?
grep -rL "use Test::More tests => 1;" t | wc -l
is showing just number of results in grep output.
bash
I need to grep only files that does not contain use Test::More tests => 1;
string and having more than 10
strings. How to do that ?
Typical solution for printing file names without match is using grep -L
flag and typical solution for counting line numbers is using wc -l
. But how to combine them ?
grep -rL "use Test::More tests => 1;" t | wc -l
is showing just number of results in grep output.
bash
bash
asked Nov 20 '18 at 14:34
Paul SerikovPaul Serikov
378115
378115
By "having more than 10 strings", do you mean more than ten lines? If not, can you clarify? Do you mean more than ten lines of distinct code?
– Paul Hodges
Nov 20 '18 at 15:15
add a comment |
By "having more than 10 strings", do you mean more than ten lines? If not, can you clarify? Do you mean more than ten lines of distinct code?
– Paul Hodges
Nov 20 '18 at 15:15
By "having more than 10 strings", do you mean more than ten lines? If not, can you clarify? Do you mean more than ten lines of distinct code?
– Paul Hodges
Nov 20 '18 at 15:15
By "having more than 10 strings", do you mean more than ten lines? If not, can you clarify? Do you mean more than ten lines of distinct code?
– Paul Hodges
Nov 20 '18 at 15:15
add a comment |
3 Answers
3
active
oldest
votes
grep -L will list files that do not contain the search string. So, grep -L is a fundamental part of your solution. However, by piping the result to wc -l, you are simply counting all the files that do not contain the search string. This is not what you wanted as you indicated. Rather, you just want to list files that don't have the search string AND have more than 10 lines. Consider the following code:
grep -rL "use Test::More tests => 1;" t | xargs wc -l | awk '$1 > 10 {print $2}'
The most interesting command here is xargs which takes the output coming in on stdin and passes that as arguments to the next command: wc -l. Now wc -l will give you a list of linecounts and the file name. This gets piped to awk that selects all lines that have the first column value greater than 10 and displays only the second column.
You might find it useful to run the commands separately to see the output passed to the next pipe:
grep -rL "use Test::More tests => 1;" t | xargs echo
grep -rL "use Test::More tests => 1;" t | xargs wc -l
grep -rL "use Test::More tests => 1;" t | xargs wc -l | awk '$1 > 10 '
And then putting it all together:
grep -rL "use Test::More tests => 1;" t | xargs wc -l | awk '$1 > 10 {print $2}'
add a comment |
You can run a loop using find
in process substitution:
while IFS= read -d '' -r file; do
grep -Fq 'use Test::More tests => 1;' "$file" &&
(( $(wc -l < "$file") >= 10 )) && echo "$file"
done < <(find . -type f -print0)
This code takes care of filenames with space, newlines or glob characters.
add a comment |
TL;DR:
awk 'FNR==1 { found=0 }
/uses+Test::Mores+testss*=>s*1s*;/ { found=1; }
FNR > 10 { if ( found ) { print FILENAME; nextfile } }' t/*
Breaking it down, with and without
grep
.
To only get files with more than 10 lines:
awk 'FNR==11 { print FILENAME; nextfile; }' *
FNR
is "File Number of Record", i.e., which line of this file are we on. If it's 11, there are more than ten lines, so print the FILENAME and move on the the next file.
You can save a list of files without your search string to an array with
declare -a lst=( $( grep -rL "use Test::More tests => 1;" t ) )
Then you can report those with over ten lines with
awk 'FNR==11 { print FILENAME; nextfile; }' "${lst[@]}"
Though I'd recommend not being quite so rigid - sometimes people fumble-finger or align things, etc, so try it this way:
declare -a lst=( $( grep -rLE "uses+Test::Mores+testss*=>s*1s*;" t ) )
awk 'FNR==11 { print FILENAME; nextfile; }' "${lst[@]}"
You could do it all in one line with a subcall, like so:
awk 'FNR==11 { print FILENAME; nextfile; }' $( grep -rLE "uses+Test::Mores+testss*=>s*1s*;" t )
This also avoids unnecessary extraneous executions. If you want to really trim it down, we could likely do it all in one awk
, but if we need to traverse more than the one subdirectory then we ought to use grep
or find
anyway. Otherwise,
if you are only searching the files in the
t
directory and not its children -
awk 'FNR==1 { found=0 }
/uses+Test::Mores+testss*=>s*1s*;/ { found=1; }
FNR > 10 { if ( found ) { print FILENAME; nextfile } }' t/*
You could refine this is, for example, all the files you are checking have a name like *.pl
, which would avoid trying to read directories and other such ugliness. Likewise, this may get confused by odd/off filenames.
But IF what you actually wanted was files with more than ten distinct lines that do NOT have your token string in them, then change the
awk
to -
awk '1 == FNR { cnt=0; found=0; }
hit[$0] { next; }
/uses+Test::Mores+testss*=>s*1s*;/ { found=1; }
{ hit[$0]=1; cnt++;
if ( 10 < cnt ) { print FILENAME; nextfile; }
}
' t/*
Yes, you can squish all that into one line if you prefer but ew, don't, lol.
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
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/3.0/"u003ecc by-sa 3.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%2fstackoverflow.com%2fquestions%2f53395328%2fhow-to-grep-files-by-regexp-and-number-of-lines%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
grep -L will list files that do not contain the search string. So, grep -L is a fundamental part of your solution. However, by piping the result to wc -l, you are simply counting all the files that do not contain the search string. This is not what you wanted as you indicated. Rather, you just want to list files that don't have the search string AND have more than 10 lines. Consider the following code:
grep -rL "use Test::More tests => 1;" t | xargs wc -l | awk '$1 > 10 {print $2}'
The most interesting command here is xargs which takes the output coming in on stdin and passes that as arguments to the next command: wc -l. Now wc -l will give you a list of linecounts and the file name. This gets piped to awk that selects all lines that have the first column value greater than 10 and displays only the second column.
You might find it useful to run the commands separately to see the output passed to the next pipe:
grep -rL "use Test::More tests => 1;" t | xargs echo
grep -rL "use Test::More tests => 1;" t | xargs wc -l
grep -rL "use Test::More tests => 1;" t | xargs wc -l | awk '$1 > 10 '
And then putting it all together:
grep -rL "use Test::More tests => 1;" t | xargs wc -l | awk '$1 > 10 {print $2}'
add a comment |
grep -L will list files that do not contain the search string. So, grep -L is a fundamental part of your solution. However, by piping the result to wc -l, you are simply counting all the files that do not contain the search string. This is not what you wanted as you indicated. Rather, you just want to list files that don't have the search string AND have more than 10 lines. Consider the following code:
grep -rL "use Test::More tests => 1;" t | xargs wc -l | awk '$1 > 10 {print $2}'
The most interesting command here is xargs which takes the output coming in on stdin and passes that as arguments to the next command: wc -l. Now wc -l will give you a list of linecounts and the file name. This gets piped to awk that selects all lines that have the first column value greater than 10 and displays only the second column.
You might find it useful to run the commands separately to see the output passed to the next pipe:
grep -rL "use Test::More tests => 1;" t | xargs echo
grep -rL "use Test::More tests => 1;" t | xargs wc -l
grep -rL "use Test::More tests => 1;" t | xargs wc -l | awk '$1 > 10 '
And then putting it all together:
grep -rL "use Test::More tests => 1;" t | xargs wc -l | awk '$1 > 10 {print $2}'
add a comment |
grep -L will list files that do not contain the search string. So, grep -L is a fundamental part of your solution. However, by piping the result to wc -l, you are simply counting all the files that do not contain the search string. This is not what you wanted as you indicated. Rather, you just want to list files that don't have the search string AND have more than 10 lines. Consider the following code:
grep -rL "use Test::More tests => 1;" t | xargs wc -l | awk '$1 > 10 {print $2}'
The most interesting command here is xargs which takes the output coming in on stdin and passes that as arguments to the next command: wc -l. Now wc -l will give you a list of linecounts and the file name. This gets piped to awk that selects all lines that have the first column value greater than 10 and displays only the second column.
You might find it useful to run the commands separately to see the output passed to the next pipe:
grep -rL "use Test::More tests => 1;" t | xargs echo
grep -rL "use Test::More tests => 1;" t | xargs wc -l
grep -rL "use Test::More tests => 1;" t | xargs wc -l | awk '$1 > 10 '
And then putting it all together:
grep -rL "use Test::More tests => 1;" t | xargs wc -l | awk '$1 > 10 {print $2}'
grep -L will list files that do not contain the search string. So, grep -L is a fundamental part of your solution. However, by piping the result to wc -l, you are simply counting all the files that do not contain the search string. This is not what you wanted as you indicated. Rather, you just want to list files that don't have the search string AND have more than 10 lines. Consider the following code:
grep -rL "use Test::More tests => 1;" t | xargs wc -l | awk '$1 > 10 {print $2}'
The most interesting command here is xargs which takes the output coming in on stdin and passes that as arguments to the next command: wc -l. Now wc -l will give you a list of linecounts and the file name. This gets piped to awk that selects all lines that have the first column value greater than 10 and displays only the second column.
You might find it useful to run the commands separately to see the output passed to the next pipe:
grep -rL "use Test::More tests => 1;" t | xargs echo
grep -rL "use Test::More tests => 1;" t | xargs wc -l
grep -rL "use Test::More tests => 1;" t | xargs wc -l | awk '$1 > 10 '
And then putting it all together:
grep -rL "use Test::More tests => 1;" t | xargs wc -l | awk '$1 > 10 {print $2}'
answered Nov 20 '18 at 14:45
MarkMark
81559
81559
add a comment |
add a comment |
You can run a loop using find
in process substitution:
while IFS= read -d '' -r file; do
grep -Fq 'use Test::More tests => 1;' "$file" &&
(( $(wc -l < "$file") >= 10 )) && echo "$file"
done < <(find . -type f -print0)
This code takes care of filenames with space, newlines or glob characters.
add a comment |
You can run a loop using find
in process substitution:
while IFS= read -d '' -r file; do
grep -Fq 'use Test::More tests => 1;' "$file" &&
(( $(wc -l < "$file") >= 10 )) && echo "$file"
done < <(find . -type f -print0)
This code takes care of filenames with space, newlines or glob characters.
add a comment |
You can run a loop using find
in process substitution:
while IFS= read -d '' -r file; do
grep -Fq 'use Test::More tests => 1;' "$file" &&
(( $(wc -l < "$file") >= 10 )) && echo "$file"
done < <(find . -type f -print0)
This code takes care of filenames with space, newlines or glob characters.
You can run a loop using find
in process substitution:
while IFS= read -d '' -r file; do
grep -Fq 'use Test::More tests => 1;' "$file" &&
(( $(wc -l < "$file") >= 10 )) && echo "$file"
done < <(find . -type f -print0)
This code takes care of filenames with space, newlines or glob characters.
answered Nov 20 '18 at 14:48
anubhavaanubhava
521k46316390
521k46316390
add a comment |
add a comment |
TL;DR:
awk 'FNR==1 { found=0 }
/uses+Test::Mores+testss*=>s*1s*;/ { found=1; }
FNR > 10 { if ( found ) { print FILENAME; nextfile } }' t/*
Breaking it down, with and without
grep
.
To only get files with more than 10 lines:
awk 'FNR==11 { print FILENAME; nextfile; }' *
FNR
is "File Number of Record", i.e., which line of this file are we on. If it's 11, there are more than ten lines, so print the FILENAME and move on the the next file.
You can save a list of files without your search string to an array with
declare -a lst=( $( grep -rL "use Test::More tests => 1;" t ) )
Then you can report those with over ten lines with
awk 'FNR==11 { print FILENAME; nextfile; }' "${lst[@]}"
Though I'd recommend not being quite so rigid - sometimes people fumble-finger or align things, etc, so try it this way:
declare -a lst=( $( grep -rLE "uses+Test::Mores+testss*=>s*1s*;" t ) )
awk 'FNR==11 { print FILENAME; nextfile; }' "${lst[@]}"
You could do it all in one line with a subcall, like so:
awk 'FNR==11 { print FILENAME; nextfile; }' $( grep -rLE "uses+Test::Mores+testss*=>s*1s*;" t )
This also avoids unnecessary extraneous executions. If you want to really trim it down, we could likely do it all in one awk
, but if we need to traverse more than the one subdirectory then we ought to use grep
or find
anyway. Otherwise,
if you are only searching the files in the
t
directory and not its children -
awk 'FNR==1 { found=0 }
/uses+Test::Mores+testss*=>s*1s*;/ { found=1; }
FNR > 10 { if ( found ) { print FILENAME; nextfile } }' t/*
You could refine this is, for example, all the files you are checking have a name like *.pl
, which would avoid trying to read directories and other such ugliness. Likewise, this may get confused by odd/off filenames.
But IF what you actually wanted was files with more than ten distinct lines that do NOT have your token string in them, then change the
awk
to -
awk '1 == FNR { cnt=0; found=0; }
hit[$0] { next; }
/uses+Test::Mores+testss*=>s*1s*;/ { found=1; }
{ hit[$0]=1; cnt++;
if ( 10 < cnt ) { print FILENAME; nextfile; }
}
' t/*
Yes, you can squish all that into one line if you prefer but ew, don't, lol.
add a comment |
TL;DR:
awk 'FNR==1 { found=0 }
/uses+Test::Mores+testss*=>s*1s*;/ { found=1; }
FNR > 10 { if ( found ) { print FILENAME; nextfile } }' t/*
Breaking it down, with and without
grep
.
To only get files with more than 10 lines:
awk 'FNR==11 { print FILENAME; nextfile; }' *
FNR
is "File Number of Record", i.e., which line of this file are we on. If it's 11, there are more than ten lines, so print the FILENAME and move on the the next file.
You can save a list of files without your search string to an array with
declare -a lst=( $( grep -rL "use Test::More tests => 1;" t ) )
Then you can report those with over ten lines with
awk 'FNR==11 { print FILENAME; nextfile; }' "${lst[@]}"
Though I'd recommend not being quite so rigid - sometimes people fumble-finger or align things, etc, so try it this way:
declare -a lst=( $( grep -rLE "uses+Test::Mores+testss*=>s*1s*;" t ) )
awk 'FNR==11 { print FILENAME; nextfile; }' "${lst[@]}"
You could do it all in one line with a subcall, like so:
awk 'FNR==11 { print FILENAME; nextfile; }' $( grep -rLE "uses+Test::Mores+testss*=>s*1s*;" t )
This also avoids unnecessary extraneous executions. If you want to really trim it down, we could likely do it all in one awk
, but if we need to traverse more than the one subdirectory then we ought to use grep
or find
anyway. Otherwise,
if you are only searching the files in the
t
directory and not its children -
awk 'FNR==1 { found=0 }
/uses+Test::Mores+testss*=>s*1s*;/ { found=1; }
FNR > 10 { if ( found ) { print FILENAME; nextfile } }' t/*
You could refine this is, for example, all the files you are checking have a name like *.pl
, which would avoid trying to read directories and other such ugliness. Likewise, this may get confused by odd/off filenames.
But IF what you actually wanted was files with more than ten distinct lines that do NOT have your token string in them, then change the
awk
to -
awk '1 == FNR { cnt=0; found=0; }
hit[$0] { next; }
/uses+Test::Mores+testss*=>s*1s*;/ { found=1; }
{ hit[$0]=1; cnt++;
if ( 10 < cnt ) { print FILENAME; nextfile; }
}
' t/*
Yes, you can squish all that into one line if you prefer but ew, don't, lol.
add a comment |
TL;DR:
awk 'FNR==1 { found=0 }
/uses+Test::Mores+testss*=>s*1s*;/ { found=1; }
FNR > 10 { if ( found ) { print FILENAME; nextfile } }' t/*
Breaking it down, with and without
grep
.
To only get files with more than 10 lines:
awk 'FNR==11 { print FILENAME; nextfile; }' *
FNR
is "File Number of Record", i.e., which line of this file are we on. If it's 11, there are more than ten lines, so print the FILENAME and move on the the next file.
You can save a list of files without your search string to an array with
declare -a lst=( $( grep -rL "use Test::More tests => 1;" t ) )
Then you can report those with over ten lines with
awk 'FNR==11 { print FILENAME; nextfile; }' "${lst[@]}"
Though I'd recommend not being quite so rigid - sometimes people fumble-finger or align things, etc, so try it this way:
declare -a lst=( $( grep -rLE "uses+Test::Mores+testss*=>s*1s*;" t ) )
awk 'FNR==11 { print FILENAME; nextfile; }' "${lst[@]}"
You could do it all in one line with a subcall, like so:
awk 'FNR==11 { print FILENAME; nextfile; }' $( grep -rLE "uses+Test::Mores+testss*=>s*1s*;" t )
This also avoids unnecessary extraneous executions. If you want to really trim it down, we could likely do it all in one awk
, but if we need to traverse more than the one subdirectory then we ought to use grep
or find
anyway. Otherwise,
if you are only searching the files in the
t
directory and not its children -
awk 'FNR==1 { found=0 }
/uses+Test::Mores+testss*=>s*1s*;/ { found=1; }
FNR > 10 { if ( found ) { print FILENAME; nextfile } }' t/*
You could refine this is, for example, all the files you are checking have a name like *.pl
, which would avoid trying to read directories and other such ugliness. Likewise, this may get confused by odd/off filenames.
But IF what you actually wanted was files with more than ten distinct lines that do NOT have your token string in them, then change the
awk
to -
awk '1 == FNR { cnt=0; found=0; }
hit[$0] { next; }
/uses+Test::Mores+testss*=>s*1s*;/ { found=1; }
{ hit[$0]=1; cnt++;
if ( 10 < cnt ) { print FILENAME; nextfile; }
}
' t/*
Yes, you can squish all that into one line if you prefer but ew, don't, lol.
TL;DR:
awk 'FNR==1 { found=0 }
/uses+Test::Mores+testss*=>s*1s*;/ { found=1; }
FNR > 10 { if ( found ) { print FILENAME; nextfile } }' t/*
Breaking it down, with and without
grep
.
To only get files with more than 10 lines:
awk 'FNR==11 { print FILENAME; nextfile; }' *
FNR
is "File Number of Record", i.e., which line of this file are we on. If it's 11, there are more than ten lines, so print the FILENAME and move on the the next file.
You can save a list of files without your search string to an array with
declare -a lst=( $( grep -rL "use Test::More tests => 1;" t ) )
Then you can report those with over ten lines with
awk 'FNR==11 { print FILENAME; nextfile; }' "${lst[@]}"
Though I'd recommend not being quite so rigid - sometimes people fumble-finger or align things, etc, so try it this way:
declare -a lst=( $( grep -rLE "uses+Test::Mores+testss*=>s*1s*;" t ) )
awk 'FNR==11 { print FILENAME; nextfile; }' "${lst[@]}"
You could do it all in one line with a subcall, like so:
awk 'FNR==11 { print FILENAME; nextfile; }' $( grep -rLE "uses+Test::Mores+testss*=>s*1s*;" t )
This also avoids unnecessary extraneous executions. If you want to really trim it down, we could likely do it all in one awk
, but if we need to traverse more than the one subdirectory then we ought to use grep
or find
anyway. Otherwise,
if you are only searching the files in the
t
directory and not its children -
awk 'FNR==1 { found=0 }
/uses+Test::Mores+testss*=>s*1s*;/ { found=1; }
FNR > 10 { if ( found ) { print FILENAME; nextfile } }' t/*
You could refine this is, for example, all the files you are checking have a name like *.pl
, which would avoid trying to read directories and other such ugliness. Likewise, this may get confused by odd/off filenames.
But IF what you actually wanted was files with more than ten distinct lines that do NOT have your token string in them, then change the
awk
to -
awk '1 == FNR { cnt=0; found=0; }
hit[$0] { next; }
/uses+Test::Mores+testss*=>s*1s*;/ { found=1; }
{ hit[$0]=1; cnt++;
if ( 10 < cnt ) { print FILENAME; nextfile; }
}
' t/*
Yes, you can squish all that into one line if you prefer but ew, don't, lol.
edited Nov 20 '18 at 16:43
answered Nov 20 '18 at 15:14
Paul HodgesPaul Hodges
3,0111321
3,0111321
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- 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.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- 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%2fstackoverflow.com%2fquestions%2f53395328%2fhow-to-grep-files-by-regexp-and-number-of-lines%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
By "having more than 10 strings", do you mean more than ten lines? If not, can you clarify? Do you mean more than ten lines of distinct code?
– Paul Hodges
Nov 20 '18 at 15:15