Вы должны начать с / etc / profile
. Посмотрите, какие еще файлы были получены этим (возможно, с помощью команды .
).
Например, в моей системе Ubuntu из
/ etc / profile
все файлы * .sh находятся в /etc/profile.d/
/etc/profile.d/bash_completion.sh
sources / usr / share / bash-completion / bash_completion
/ usr / share / bash-completions / completions /
~ / .bash_completion
Вы захотите пройти по этому пути в различных системах. Возможно, на одном из них нет файла cmake
в / usr / share / bash-completions / Completions /.
Я использовал комбинированные ответы для достижения желаемого результата.
#!/bin/bash
isTable=0
beginTable="^\|\|"
lineNum=1
tableCount=0
while IFS= read -r line #Print changes to temp file
do
if [[ $line =~ $beginTable ]]
then
if [ "$isTable" -eq "0" ]
then
isTable=1
((tableCount++))
> $1_$tableCount
sed -n -r $lineNum's_^\|\|_\{\|\n\|_p' $1 >> $1_$tableCount #Begin table
sed -r $lineNum's_^\|\|_@'$tableCount'@_' -i $1
else
sed -n -r $lineNum's_^\|\|_\|-\n\|_p' $1 >> $1_$tableCount #Define row
fi
else
if [ "$isTable" -eq "1" ]
then
isTable=0
sed -n -r $lineNum's_(.*)$_\1\|\}\n_p' $1 >> $1_$tableCount #End table
fi
fi
((lineNum++))
done < $1
for ((n=1;n<=$tableCount;n++))
do
sed -e '/@'$n'@/r '$1'_'$n'' -e '/^@'$n'@/d;/^||/d' -i $1
rm "$1"_"$n"
done
Я распечатываю каждую таблицу в файл с другим номером, а затем sed
считываю каждую из них в исходный файл.
sed 's/||$/&\n|-/;s/^||/|/;1s/^/{|\n/;$s/-$/}/' file
Примечание \ n
только для GNU sed, иначе должно быть
sed 's/||$/||\
|-/;s/^||/|/;1s/^/{|\
/;$s/-$/}/' file