удалить пробелы с помощью sed

Шелл-код выглядит нормально, а упрощенная текстовая версия работает должным образом:

seq 12 | paste - - - - | 
while IFS=' ' read -r f1 f2 f3 f4 ; do 
    echo "$f1 $f2 $f3 $f4 " 
done

Выход:

1   2   3   4    
5   6   7   8    
9   10  11  12   

Поэтомуsteeldriver комментарий , вероятно, верен, и либо программа mpiexec, либо одна из программ pythonпотребляют оставшиеся строки ввода, так что echoникогда не доходит до вторая строка ввода.

В качестве примера рассмотрим приведенный выше код с добавлением еще одного голодного набора команд:

seq 12 | paste - - - - | 
while IFS=' ' read -r f1 f2 f3 f4 ; do 
     echo "$f1 $f2 $f3 $f4 "
     (read x; read x; read x;) 
done

Вывод (обратите внимание на недостающие строки):

1   2   3   4   

0
29.04.2020, 15:04
1 ответ

Предполагая, что у вас есть GNU sed, следующая команда должна удалить все начальные пробелы:

sed -E 's/^\s+//' file.txt

или для POSIX -совместимых sedвариантов

sed 's/^[[:space:]]\{1,\}//' file.txt
3
19.03.2021, 02:19

Теги

Похожие вопросы