Weird characters when reading out a file line by line [duplicate]
This question already has an answer here:
Remove carriage return in Unix
16 answers
Are shell scripts sensitive to encoding and line endings?
2 answers
I have a file containing paths to certain other files.
Now I want to read out this file line by line and call a function on each path specified.
#!/bin/bash
mkdir dest
while IFS='' read -r line || [[ -n "$line" ]]; do
mv "$line" dest/
done < input_file
and my input file looks like this:
./data/f1
./data/f2
./data/f3
But I get this error:
mv: cannot stat './data/f3'$'r': No such file or directory
mv: cannot stat './data/f3'$'r': No such file or directory
mv: cannot stat './data/f3'$'r': No such file or directory
I couldn't figure out what these special symbols in the end mean.
bash shell
marked as duplicate by chepner, kvantour, Jens
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 14 '18 at 18:58
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
add a comment |
This question already has an answer here:
Remove carriage return in Unix
16 answers
Are shell scripts sensitive to encoding and line endings?
2 answers
I have a file containing paths to certain other files.
Now I want to read out this file line by line and call a function on each path specified.
#!/bin/bash
mkdir dest
while IFS='' read -r line || [[ -n "$line" ]]; do
mv "$line" dest/
done < input_file
and my input file looks like this:
./data/f1
./data/f2
./data/f3
But I get this error:
mv: cannot stat './data/f3'$'r': No such file or directory
mv: cannot stat './data/f3'$'r': No such file or directory
mv: cannot stat './data/f3'$'r': No such file or directory
I couldn't figure out what these special symbols in the end mean.
bash shell
marked as duplicate by chepner, kvantour, Jens
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 14 '18 at 18:58
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
2
input_file
has DOS line breaks. You can remove it usingdos2unix
orsed
– anubhava
Nov 14 '18 at 16:14
related: stackoverflow.com/questions/45772525/…
– kvantour
Nov 14 '18 at 16:18
I thought there used to be a relevant duplicate listed in thebash
tag wiki, but it doesn't appear to be there any more.
– chepner
Nov 14 '18 at 16:19
Also, if you fixinput_file
to be a proper POSIX text file, you can get rid of the|| [ -n "$line" ]]
hack.
– chepner
Nov 14 '18 at 16:26
1
See the "Before asking about problematic code" section of the Stack Overflow 'bash' Info page.
– pjh
Nov 14 '18 at 17:02
add a comment |
This question already has an answer here:
Remove carriage return in Unix
16 answers
Are shell scripts sensitive to encoding and line endings?
2 answers
I have a file containing paths to certain other files.
Now I want to read out this file line by line and call a function on each path specified.
#!/bin/bash
mkdir dest
while IFS='' read -r line || [[ -n "$line" ]]; do
mv "$line" dest/
done < input_file
and my input file looks like this:
./data/f1
./data/f2
./data/f3
But I get this error:
mv: cannot stat './data/f3'$'r': No such file or directory
mv: cannot stat './data/f3'$'r': No such file or directory
mv: cannot stat './data/f3'$'r': No such file or directory
I couldn't figure out what these special symbols in the end mean.
bash shell
This question already has an answer here:
Remove carriage return in Unix
16 answers
Are shell scripts sensitive to encoding and line endings?
2 answers
I have a file containing paths to certain other files.
Now I want to read out this file line by line and call a function on each path specified.
#!/bin/bash
mkdir dest
while IFS='' read -r line || [[ -n "$line" ]]; do
mv "$line" dest/
done < input_file
and my input file looks like this:
./data/f1
./data/f2
./data/f3
But I get this error:
mv: cannot stat './data/f3'$'r': No such file or directory
mv: cannot stat './data/f3'$'r': No such file or directory
mv: cannot stat './data/f3'$'r': No such file or directory
I couldn't figure out what these special symbols in the end mean.
This question already has an answer here:
Remove carriage return in Unix
16 answers
Are shell scripts sensitive to encoding and line endings?
2 answers
bash shell
bash shell
edited Nov 14 '18 at 16:59
kvantour
8,79831330
8,79831330
asked Nov 14 '18 at 16:04
JonasJonas
604829
604829
marked as duplicate by chepner, kvantour, Jens
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 14 '18 at 18:58
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
marked as duplicate by chepner, kvantour, Jens
StackExchange.ready(function() {
if (StackExchange.options.isMobile) return;
$('.dupe-hammer-message-hover:not(.hover-bound)').each(function() {
var $hover = $(this).addClass('hover-bound'),
$msg = $hover.siblings('.dupe-hammer-message');
$hover.hover(
function() {
$hover.showInfoMessage('', {
messageElement: $msg.clone().show(),
transient: false,
position: { my: 'bottom left', at: 'top center', offsetTop: -7 },
dismissable: false,
relativeToBody: true
});
},
function() {
StackExchange.helpers.removeMessages();
}
);
});
});
Nov 14 '18 at 18:58
This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.
2
input_file
has DOS line breaks. You can remove it usingdos2unix
orsed
– anubhava
Nov 14 '18 at 16:14
related: stackoverflow.com/questions/45772525/…
– kvantour
Nov 14 '18 at 16:18
I thought there used to be a relevant duplicate listed in thebash
tag wiki, but it doesn't appear to be there any more.
– chepner
Nov 14 '18 at 16:19
Also, if you fixinput_file
to be a proper POSIX text file, you can get rid of the|| [ -n "$line" ]]
hack.
– chepner
Nov 14 '18 at 16:26
1
See the "Before asking about problematic code" section of the Stack Overflow 'bash' Info page.
– pjh
Nov 14 '18 at 17:02
add a comment |
2
input_file
has DOS line breaks. You can remove it usingdos2unix
orsed
– anubhava
Nov 14 '18 at 16:14
related: stackoverflow.com/questions/45772525/…
– kvantour
Nov 14 '18 at 16:18
I thought there used to be a relevant duplicate listed in thebash
tag wiki, but it doesn't appear to be there any more.
– chepner
Nov 14 '18 at 16:19
Also, if you fixinput_file
to be a proper POSIX text file, you can get rid of the|| [ -n "$line" ]]
hack.
– chepner
Nov 14 '18 at 16:26
1
See the "Before asking about problematic code" section of the Stack Overflow 'bash' Info page.
– pjh
Nov 14 '18 at 17:02
2
2
input_file
has DOS line breaks. You can remove it using dos2unix
or sed
– anubhava
Nov 14 '18 at 16:14
input_file
has DOS line breaks. You can remove it using dos2unix
or sed
– anubhava
Nov 14 '18 at 16:14
related: stackoverflow.com/questions/45772525/…
– kvantour
Nov 14 '18 at 16:18
related: stackoverflow.com/questions/45772525/…
– kvantour
Nov 14 '18 at 16:18
I thought there used to be a relevant duplicate listed in the
bash
tag wiki, but it doesn't appear to be there any more.– chepner
Nov 14 '18 at 16:19
I thought there used to be a relevant duplicate listed in the
bash
tag wiki, but it doesn't appear to be there any more.– chepner
Nov 14 '18 at 16:19
Also, if you fix
input_file
to be a proper POSIX text file, you can get rid of the || [ -n "$line" ]]
hack.– chepner
Nov 14 '18 at 16:26
Also, if you fix
input_file
to be a proper POSIX text file, you can get rid of the || [ -n "$line" ]]
hack.– chepner
Nov 14 '18 at 16:26
1
1
See the "Before asking about problematic code" section of the Stack Overflow 'bash' Info page.
– pjh
Nov 14 '18 at 17:02
See the "Before asking about problematic code" section of the Stack Overflow 'bash' Info page.
– pjh
Nov 14 '18 at 17:02
add a comment |
0
active
oldest
votes
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
2
input_file
has DOS line breaks. You can remove it usingdos2unix
orsed
– anubhava
Nov 14 '18 at 16:14
related: stackoverflow.com/questions/45772525/…
– kvantour
Nov 14 '18 at 16:18
I thought there used to be a relevant duplicate listed in the
bash
tag wiki, but it doesn't appear to be there any more.– chepner
Nov 14 '18 at 16:19
Also, if you fix
input_file
to be a proper POSIX text file, you can get rid of the|| [ -n "$line" ]]
hack.– chepner
Nov 14 '18 at 16:26
1
See the "Before asking about problematic code" section of the Stack Overflow 'bash' Info page.
– pjh
Nov 14 '18 at 17:02