![]() |
1
3
而不是:
这样做:
(如果你有理由一行一行地做事情,最好把它包括在问题中。) |
![]() |
2
40
正如其他人所指出的,使用cat或awk而不是read echo循环是一种更好的方法——避免空白剪裁问题(以及一些您没有偶然发现的问题),更快地运行,至少使用cat,这只是更干净的代码。尽管如此,我还是想尝试一下让read echo循环正常工作。 首先,空格修剪问题:read命令自动修剪前导和尾随的空格;通过将ifs变量设置为空来更改其空白定义,可以解决这个问题。另外,read假定行尾的反斜杠意味着下一行是一个连续行,应该与这个连续行拼接在一起;要解决这个问题,请使用它的-r(原始)标志。这里的第三个问题是,许多echo实现解释字符串中的转义序列(例如,它们可能会将\n转换为实际的换行符);要解决此问题,请改用printf。最后,正如一般的脚本卫生规则,当您实际上不需要时,不应该使用cat;而是使用输入重定向。通过这些更改,内部循环如下所示:
…周围的脚本还有一些其他问题:试图将文件定义为可用文件列表的行。纺织文件周围有引号,这意味着它永远不会扩展为实际的文件列表。最好的方法是使用数组:
(如果任何文件名中有空格或其他有趣的字符,$F的所有出现都应该用双引号括起来,$output也应该这样做,尽管脚本中已经定义了这一点,因此可以安全地去掉它。)
最后,有一个
|
![]() |
3
4
这是一种非常昂贵的合并文件的方法。
如果要在连接时向每个文件添加一个空白(换行符),请使用awk
或
|
![]() |
4
1
这允许您像在原始脚本中那样在每个输入文件之间散布新行:
注意
|
![]() |
5
0
我的正确答案是 this ,转载如下:
请注意,它将处理输入从另一个命令(而不仅仅是从实际文件)进行管道传输的情况。 注意,您还可以简化重定向,如下所示。
|
![]() |
user3224522 · 以文件名作为第一列连接多个txt文件 2 年前 |
|
ayherrera · bash-在新txt文件中多行打印id号 7 年前 |
![]() |
Kolby · 如何在bash脚本中获取cat输出路径作为变量 7 年前 |
![]() |
Sam · 在Bash中使用cat和grep命令 7 年前 |
![]() |
Joel · 如何在目录中复制多个文件并将每个文件移动到正确的目录中 7 年前 |
![]() |
user697911 · 如何用换行符将文件合并为一个文件? 7 年前 |