cut not outputting anything
I created a script by using the command line initially:
grep -c "Author" reviews_folder/* | cut -d / -f 2 | sort -nt':' -k2 | sed 's/.dat:/ /g'
It worked, however I then needed to make it a shell script which allowed the user to enter a directory for it to search, so I changed it to:
grep -c "Author" $1/* | cut -d / -f 2 | sort -nt':' -k2 | sed 's/.dat:/ /g'
After this was complete, rather than the script working, it just printed lots of blank lines.
Any help would be greatly appreciated. Thanks!
command-line bash scripts cut-command
add a comment |
I created a script by using the command line initially:
grep -c "Author" reviews_folder/* | cut -d / -f 2 | sort -nt':' -k2 | sed 's/.dat:/ /g'
It worked, however I then needed to make it a shell script which allowed the user to enter a directory for it to search, so I changed it to:
grep -c "Author" $1/* | cut -d / -f 2 | sort -nt':' -k2 | sed 's/.dat:/ /g'
After this was complete, rather than the script working, it just printed lots of blank lines.
Any help would be greatly appreciated. Thanks!
command-line bash scripts cut-command
Add anecho $1
to see what's going on, and any spaces in the directory names?
– Xen2050
Mar 14 at 22:45
add a comment |
I created a script by using the command line initially:
grep -c "Author" reviews_folder/* | cut -d / -f 2 | sort -nt':' -k2 | sed 's/.dat:/ /g'
It worked, however I then needed to make it a shell script which allowed the user to enter a directory for it to search, so I changed it to:
grep -c "Author" $1/* | cut -d / -f 2 | sort -nt':' -k2 | sed 's/.dat:/ /g'
After this was complete, rather than the script working, it just printed lots of blank lines.
Any help would be greatly appreciated. Thanks!
command-line bash scripts cut-command
I created a script by using the command line initially:
grep -c "Author" reviews_folder/* | cut -d / -f 2 | sort -nt':' -k2 | sed 's/.dat:/ /g'
It worked, however I then needed to make it a shell script which allowed the user to enter a directory for it to search, so I changed it to:
grep -c "Author" $1/* | cut -d / -f 2 | sort -nt':' -k2 | sed 's/.dat:/ /g'
After this was complete, rather than the script working, it just printed lots of blank lines.
Any help would be greatly appreciated. Thanks!
command-line bash scripts cut-command
command-line bash scripts cut-command
edited Mar 14 at 17:04
Ravexina
33.3k1488115
33.3k1488115
asked Mar 14 at 16:34
Matthew EvansMatthew Evans
61
61
Add anecho $1
to see what's going on, and any spaces in the directory names?
– Xen2050
Mar 14 at 22:45
add a comment |
Add anecho $1
to see what's going on, and any spaces in the directory names?
– Xen2050
Mar 14 at 22:45
Add an
echo $1
to see what's going on, and any spaces in the directory names?– Xen2050
Mar 14 at 22:45
Add an
echo $1
to see what's going on, and any spaces in the directory names?– Xen2050
Mar 14 at 22:45
add a comment |
1 Answer
1
active
oldest
votes
I guess you are running your script like: script.sh dir/
or bash script.sh dir/
.
The way you pass the directory is causing the problem.
In your script you got a grep
command:
grep -c "Author" $1/*
If you pass the directory with tailing slash, the grep
command would be run as:
grep -c "Author" dir//*
Example:
grep -c "Author" dir//somefile.dat dir//someother-file.dat
And its result would be similar to:
dir//somefile.dat:5
And your cut
command would only return an empty string and pass it to sort
:
dir//somefile.dat:5 # < You are asking for second part which is empty
So either run your script like: script.sh dir
or change it to something like this:
#!/bin/bash
DIR=${1%/}
grep -c "Author" ${DIR}/* | cut -d / -f 2 | sort -nt':' -k2 | sed 's/.dat:/ /g'
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/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%2faskubuntu.com%2fquestions%2f1125659%2fcut-not-outputting-anything%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
I guess you are running your script like: script.sh dir/
or bash script.sh dir/
.
The way you pass the directory is causing the problem.
In your script you got a grep
command:
grep -c "Author" $1/*
If you pass the directory with tailing slash, the grep
command would be run as:
grep -c "Author" dir//*
Example:
grep -c "Author" dir//somefile.dat dir//someother-file.dat
And its result would be similar to:
dir//somefile.dat:5
And your cut
command would only return an empty string and pass it to sort
:
dir//somefile.dat:5 # < You are asking for second part which is empty
So either run your script like: script.sh dir
or change it to something like this:
#!/bin/bash
DIR=${1%/}
grep -c "Author" ${DIR}/* | cut -d / -f 2 | sort -nt':' -k2 | sed 's/.dat:/ /g'
add a comment |
I guess you are running your script like: script.sh dir/
or bash script.sh dir/
.
The way you pass the directory is causing the problem.
In your script you got a grep
command:
grep -c "Author" $1/*
If you pass the directory with tailing slash, the grep
command would be run as:
grep -c "Author" dir//*
Example:
grep -c "Author" dir//somefile.dat dir//someother-file.dat
And its result would be similar to:
dir//somefile.dat:5
And your cut
command would only return an empty string and pass it to sort
:
dir//somefile.dat:5 # < You are asking for second part which is empty
So either run your script like: script.sh dir
or change it to something like this:
#!/bin/bash
DIR=${1%/}
grep -c "Author" ${DIR}/* | cut -d / -f 2 | sort -nt':' -k2 | sed 's/.dat:/ /g'
add a comment |
I guess you are running your script like: script.sh dir/
or bash script.sh dir/
.
The way you pass the directory is causing the problem.
In your script you got a grep
command:
grep -c "Author" $1/*
If you pass the directory with tailing slash, the grep
command would be run as:
grep -c "Author" dir//*
Example:
grep -c "Author" dir//somefile.dat dir//someother-file.dat
And its result would be similar to:
dir//somefile.dat:5
And your cut
command would only return an empty string and pass it to sort
:
dir//somefile.dat:5 # < You are asking for second part which is empty
So either run your script like: script.sh dir
or change it to something like this:
#!/bin/bash
DIR=${1%/}
grep -c "Author" ${DIR}/* | cut -d / -f 2 | sort -nt':' -k2 | sed 's/.dat:/ /g'
I guess you are running your script like: script.sh dir/
or bash script.sh dir/
.
The way you pass the directory is causing the problem.
In your script you got a grep
command:
grep -c "Author" $1/*
If you pass the directory with tailing slash, the grep
command would be run as:
grep -c "Author" dir//*
Example:
grep -c "Author" dir//somefile.dat dir//someother-file.dat
And its result would be similar to:
dir//somefile.dat:5
And your cut
command would only return an empty string and pass it to sort
:
dir//somefile.dat:5 # < You are asking for second part which is empty
So either run your script like: script.sh dir
or change it to something like this:
#!/bin/bash
DIR=${1%/}
grep -c "Author" ${DIR}/* | cut -d / -f 2 | sort -nt':' -k2 | sed 's/.dat:/ /g'
edited Mar 18 at 20:48
answered Mar 14 at 17:01
RavexinaRavexina
33.3k1488115
33.3k1488115
add a comment |
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%2f1125659%2fcut-not-outputting-anything%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
Add an
echo $1
to see what's going on, and any spaces in the directory names?– Xen2050
Mar 14 at 22:45