Ознакомьтесь с разделом «Поддерживаемые библиотеки» в https://gcc.gnu.org/wiki/InstallingGCC . Мне удалось собрать gcc 5.3 на Centos 6.5, выполнив
./contrib/download_prerequisites
, упомянутый в приведенном выше документе.
Нельзя писать в тот же файл, я бы рекомендовал создать новый файл и потом переименовать его.
tmpFile="/tmp/foo2.txt.tmp"
cat /tmp/foo.txt | while read line; do
isSlash=$(echo $line | cut -d ":" -f2 | awk '{print $1}' | grep -c ^"/")
if (( $isSlash )); then
echo "$line ;try" >> $tmpFile
else
echo "$line ;pass" >> $tmpFile
fi
done
mv $tmpFile /tmp/foo.txt
Вы можете использовать awk
, что позволяет очень легко выполнить то, что вы хотите:
awk '!/D: *\//{print $0 " ;pass"; next} {print $0 " ;try"}' foo.txt
Выход:
xxx B=C D: A ;pass
yyy F=H D:A ;pass
zzz K=L D: A ;pass
fff M=H D:/llll ;try
kkk S=D D: /kkkkk ;try
Это в основном соответствует каждой строке , не содержащейD:
и /
, и добавляет к ней ;pass
, а затем переходит к следующей строке. В противном случае он добавляет к нему ;try
.
sed
Хорошо?
$ sed '/D: *A/ s/$/\t;pass/; /D: *\// s/$/\t;try/' file
xxx B=C D: A ;pass
yyy F=H D:A ;pass
zzz K=L D: A ;pass
fff M=H D:/llll ;try
kkk S=D D: /kkkkk ;try