BASH-чтение нескольких строк из текстового файла
Я пытаюсь прочитать текстовый файл, скажем файл.txt и он содержит несколько строк.
Скажем, что выход file.txt равен
$ cat file.txt
this is line 1
this is line 2
this is line 3
Я хочу сохранить весь вывод в виде переменной, скажем, $text.
Когда переменная $text повторяется, ожидаемый результат:
this is line 1 this is line 2 this is line 3
Мой код выглядит следующим образом
while read line
do
test="${LINE}"
done < file.txt
echo $test
Выход, который я получаю, всегда только последняя строка. Есть ли способ объединить несколько строк в файле?txt как одна длинная строка?
6 ответов:
Вы можете перевести
{[0]}\n(новая строка) в(space):If lines ends with
\r\n, Вы можете сделать это:$ text=$(tr -d '\r' <file.txt | tr '\n' ' ')
К переменной необходимо добавить содержимое следующей строки:
while read line do test="${test} ${LINE}" done < file.txt echo $testОТВ. еще проще вы можете просто прочитать полный файл сразу в переменную:
test=$(cat file.txt)ОТВ.
test=$(tr "\n" " " < file.txt)Если вы хотите сохранить новые строки, это будет так же просто, как:
test=<file.txt
Я считаю, что это самый простой метод:
text=$(echo $(cat FILE))Но он не сохраняет несколько пробелов / вкладок между словами.
Использовать массивы
#!/bin/bash while read line do a=( "${a[@]}" "$line" ) done < file.txt echo -n "${a[@]}"Вывод:
this is line 1 this is line 2 this is line 3Смотрите, например, раздел tldp о массивах
Comments