Извлеките часть IFS
.
$IFS
является внутренней переменной разделителя полей bash
. Строка в скрипте приводит к тому, что bash
разделяет поля только в новых строках, а не по умолчанию (пробел, табуляция и новая строка). Вывод ls
разделен на табуляции.
This works:
#!/bin/bash
command="ls /tmp"
for file in `$command`;
do
echo $file
done
Вы можете попробовать SED
:
sed -i '3s/true/false/' file.txt
Если вы хотите сохранить исходный файл как file.txt.bak
:
sed -i.bak '3s/true/false/' file.txt
также, если Вы хотите заменить более одного происшествия True
с с в пределах одной строки
в той же строке:
sed -i.bak '3s/true/false/g' file.txt
Редактировать: Согласно вашему осветливому запросу, попробуйте:
sed -i.bak '/DIFFERENTIAL\|[^t][^r][^u][^e]$/!s/true/false/' file.txt
это Заменит «True» с «ложным» в линиях, где нет «дифференциала», а также где «правда» поставляется в конце линии.
Я нашел следующую команду, которая поможет мне:
sed '/DIFFERENTIAL/!s/true/false/g'