我有一个bash脚本,它接受一个包含115行数据的文本文件'power_coords.txt‘,在每一行中有四个(空格分隔)列,其中包含x,y,z坐标(前3个cols)和一个名称(第4个col)。示例:
36 54 19 cotc1
45 13 -27 cotc2
1 -6 14 cotc3
....我的脚本运行以下代码行,在文本文件的每一行上运行一个操作:
#!/bin/bash
input="power_coords.txt"
while IFS=" " read x y z name
do
fslmaths avg152T1.nii.gz -mul 0 -add 1 -roi $x 1 $y 1 $z 1 0 1 $name -odt float
done < "$input"这似乎工作得很好,但是当我运行代码时,我在创建的每个文件名中都得到了一个奇怪的符号:

有人知道为什么会发生这种情况以及如何修复吗?或者是一种在脚本运行后清理文件名的简单方法(例如,删除看起来像乐高的部分)?
干杯
发布于 2020-04-08 02:14:44
屏幕截图中的小方块写着"000D",所以它只是一个CR newline symbol。
首先,我建议通过打印变量$name来检查它的内容:
while IFS=" " read x y z name
do
echo "aaa${name}bbb"
done < "$input"使用aaa和bbb可以更轻松地查看输出。
它还有助于检查power_coords.txt中使用了什么字符。您可以通过将path传递给utility file来检查它。它应该打印出文件中使用了哪个“行终止符”。
在弄清楚读入$name的内容之后,您可以在power_coords.txt中转换换行符,或者调整IFS以允许将CR视为分隔符。
https://stackoverflow.com/questions/61086593
复制相似问题