Странный символ в выходном файле из скрипта bash - PullRequest
1 голос
/ 07 апреля 2020

У меня есть сценарий bash, который принимает один текстовый файл 'power_coords.txt', содержащий 115 строк данных, и в каждой строке есть четыре (разделенных пробелами) столбца, содержащие координаты x, y, z (первые 3 столбца) ) и имя (4-й столбец). Пример:

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"

Это работает нормально, однако, когда я запустить код Я получаю странный символ в каждом созданном имени файла: enter image description here

Кто-нибудь знает, почему это происходит и как это исправить? Или простой способ очистить имена файлов (т.е. удалить бит, который выглядит как le go) после запуска скрипта?

Cheers

1 Ответ

0 голосов
/ 07 апреля 2020

Небольшой квадрат на вашем скриншоте означает «000D», так что это просто CR символ новой строки .

Прежде всего, я бы порекомендовал проверить, что находится в переменной $name, просто напечатав его:

while IFS=" " read x y z name
do  
  echo "aaa${name}bbb"
done < "$input"

aaa и bbb для более удобного просмотра выходных данных.

Это также поможет проверить, какой символ используется в power_coords.txt , Вы можете проверить это, передав путь к утилите file. Он должен распечатать, какой терминатор строки используется в файле.

После выяснения того, что читается в $name, вы можете либо преобразовать разрывы строк в power_coords.txt, либо настроить IFS, чтобы разрешить CR следует также рассматривать как разделитель.

...