2015-10-13 3 views
0

Я хочу конкатрировать два файла в третий файл, но сохранить новую строку. Для этого я используюBash echo newline для файла, если часть строки

FILE1=$(cat /path/file1) 
FILE2=$(cat /path/file2) 
FILE3="$FILE1 \n $FILE2" 
echo -e $FILE3 > /path/to/file 

Однако один из файлов, у меня есть sed операцию, которая содержит строку \\n. Я не хочу, чтобы этот конкретный символ \n был создан как новая строка, когда я создаю третий файл.

Что я могу сделать?

+0

Как 'эхо -э' делает concat из 2-х файлов? – anubhava

+0

Предполагая, что мой '$ VAR' является конкат двумя файлами – Kousha

+1

Как вы устанавливаете содержимое' $ VAR'? Если вы читаете файл напрямую, то он не содержит '\ n', он содержит * literal * новые строки, и вам совсем не нужно' -e'. (Вы также не должны использовать 'echo -e', поскольку он недоказан и не надежно переносится.) При этом вам также нужно указывать' '$ VAR'', если вы хотите, чтобы пробел в его содержимом был вообще сохранен. –

ответ

1

Я не знаю, почему вы ввергаете содержимое файла в переменные вообще. Что случилось с

cat /path/file1 /path/file2 > /path/to/file 

Если вам нужен FILE1 и FILE2 вары для других целей, избежать file3

echo "$FILE1 
$FILE2" > /path/to/file 

или

printf "%s\n" "$FILE1" "$FILE2" > /path/to/file 

или

cat <<END_CONCAT > /path/to/file 
$FILE1 
$FILE2 
END_CONCAT 
+0

Очевидно, что это упрощенный вопрос, чтобы перейти к моей основной проблеме. Мне нужно манипулировать этими файлами, прежде чем добавлять их в файл. Следовательно, мне нужно сохранить их в переменной, выполнить мою обработку, а затем добавить. – Kousha

+0

Действует нижняя часть 2/3 моего ответа. «\ N» и «echo -e» вызывают проблемы, поэтому избегайте их. –

Смежные вопросы