我有一个包含以下内容的 .txt 文件:
"[email protected]"
现在,我想在我的 while 循环的帮助下将这些字符串粘贴到标准输出,这样 echo 应该写"text [email protected] text"
while read line;
do
echo "text $line text"
done <./textfile.txt
但我得到的只是:text"[email protected]"
text
--> 空格和后面的空格都不见了$line
。
如果我改变它如下
while read line;
do
echo "text\ $line text"
done <./textfile.txt
我明白了text "[email protected]"
--> 在第一个text
之后,有一个空格,但在之后[email protected]
,没有text
。
由于使用 shell 循环进行文本处理被认为是不好的做法,我会推荐一种使用专用文本处理工具的不同方法。特别
awk
想到:这将使用 Awk 的内置
printf
函数(使用与众所周知的 C 函数相同的格式化语法)来打印两端$0
括起来的整个当前行(由 表示) 。text
至于为什么您的方法不起作用:由于您确认文本文件是在基于 Windows 的机器上编辑的,这意味着行结尾采用 Linux 无法正确解释的格式。在这种情况下,通过 运行文件
dos2unix
,如应正确处理生成的文件。
自我介绍,
perl
所以请随意和我一起学习:-n
-e
s/\n|"//g
$_
分别是输入及其处理形式的变量