I need to write a "find" exec command to awk print formatted results to some existing text files. In some odd scenario, I would get lines appended on the previous last line (no CR after LF?), not on a new line. How could I prevent this from happening? is there any command I could fix the text files before the append? dos2unix?
Asked
Active
Viewed 946 times
2 Answers
1
Use:
awk 1 file1 file2 ... > outfile
instead of cat file1 file2 ... > outfile
The only problem is that unlike cat
, awk
will immediately exit with an error if it cannot open and read any of file1
, file2
, etc, instead of continuing with the rest of the files. If that's a problem, on most modern systems you can use grep ''
as already suggested here + the -h
option to omit the filenames (though beware that this is exploiting non-standard features of grep
):
grep -h '' file1 file2 ... > outfile
1
there's an interesting hack
where you can format bash command with awk and push it to bash like so:
awk '{ print "find " $1 " -exec ls {} \;" }' ./source_file | bash
this will give you instant execution of commands such as:
find /var -exec ls {} \;
find /home/user1 -exec ls {} \;
# and so on depending on the contents of the ./source_file
hope this helps :)

Roman Spiak
- 299
- 1
- 6
hexdump -C filename
) what the problem really is? Linux just uses LF as a line separator, so it can't be "no CR after LF". Editing your question with the commands you use, an example of a file where it goes wrong and what results you get would help. – dirkt Oct 08 '20 at 04:54read
shell builtin:printf hello | read q || echo not read, why?
. An easy way for me to create such broken non-text files is by copy-pasting via the GUI ;-) – Oct 08 '20 at 05:25