[英]BASH - Reading Multiple Lines from Text File
我正在尝试读取一个文本文件,例如file.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
我得到的输出总是只有最后一行。 有没有一种方法可以将file.txt中的多行连接为一个长字符串?
您可以将\\n
(换行符)转换为 (空间):
$ text=$(tr '\n' ' ' <file.txt)
$ echo $text
this is line 1 this is line 2 this is line 3
如果行以\\r\\n
结尾,则可以执行以下操作:
$ text=$(tr -d '\r' <file.txt | tr '\n' ' ')
您必须将下一行的内容附加到变量中:
while read line
do
test="${test} ${LINE}"
done < file.txt
echo $test
RESP。 甚至更简单,您也可以一次将整个文件读入变量:
test=$(cat file.txt)
RESP。
test=$(tr "\n" " " < file.txt)
如果您想保留换行符,它将很简单:
test=<file.txt
另一个:
line=$(< file.txt)
line=${line//$'\n'/ }
test=$(cat file.txt | xargs)
echo $test
我相信这是最简单的方法:
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部分
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.