【问题标题】:Bash | Importing a .txt to .txt file, line by line with 'While Read'重击 |将 .txt 导入 .txt 文件,逐行使用“读取时”
【发布时间】:2019-04-24 08:07:25
【问题描述】:

我知道这个问题出现的频率很高,但我似乎找不到使用 While Read 命令将 .txt 文件逐行导入另一个 .txt 的解决方案:

line="input.txt"

while read -r line; do
  printf '%s\n' "$line"
done < outputfile.txt

我尝试了不同的替代方案,将它们全部作为变量尝试,将变量与它们的目录一起使用,在输入文件上尝试 cat,使用 echo 和 printf 但无济于事。提前感谢您的任何和所有的进步!

【问题讨论】:

  • 您能解释一下出了什么问题吗?也就是说,正在发生什么,这与您想要发生的有什么不同?另外,您所说的“导入”到底是什么意思?
  • 我希望它把输入的txt文件逐行读入输出的txt文件,虽然这段代码运行没有错误,但没有任何东西输入到输出文件中,它仍然是空白
  • 您在示例中使用 outputfile.txt 作为输入,
  • while read -r line; do printf '%s\n' "$line"; done &lt; inputfile.txt &gt; outputfile.txt
  • 感谢 William,因为代码已对其进行了排序,感谢其他所有人,您将获得选票,但我认为我还没有获得该选项

标签: bash unix while-loop line-by-line


【解决方案1】:

我认为您只是想合并文件?

cat input.txt >> outputfile.txt 

不建议这样做,但仅供参考:

file="input.txt"
while IFS= read -r line ;do
    echo "${line}" >> outputfile.txt 
done < "${file}"

【讨论】:

  • 不知何故,您的代码中有“智能引号”—— 应该是 "。因此,如果复制并粘贴,它将不起作用。 (顺便说一句,说到引号,请考虑 &lt;"$file",在扩展前后加上双引号,以避免 shell 版本不抑制重定向时字符串拆分的错误——不幸的是,这包括今天仍在使用的 bash 版本,其中可能会导致令人惊讶的“模糊重定向”错误)。
  • 或者,while IFS= read -r line; do echo "$line"; done &lt; input &gt;&gt; output 在循环外输出重定向。
猜你喜欢
  • 2019-03-26
  • 1970-01-01
  • 2017-08-29
  • 1970-01-01
  • 2012-09-05
  • 1970-01-01
  • 2012-02-16
  • 1970-01-01
  • 2017-01-20
相关资源
最近更新 更多