Я преуспел в нескольких операциях текстовых файлов с руководством вас друзей. Во-первых, большое спасибо за помощь мне с командами.
Теперь я хочу еще больше двигаться в этих операциях по текстовому файлу и одному из мест, которые я застрял, это я бы хотел удалить *
в конце последней строки (каждого текстового файла в пределах тот же каталог) с любым 1/2-1 / 2
или 1-0
или 0-1
Это содержимое текстового файла:
- NH3 D5 2. G3 E5 3. F4 BXH3 4. BXH3 EXF4 *
и 1/2-1 / 2 представляют бы ничье, что будет выглядеть так:
- NH3 D5 2. G3 E5 3. F4 BXH3 4. BXH3 EXF4 1 / 2-1 / 2
1-0 означает белый выигранный, и это было бы так:
- NH3 D5 2. G3 E5 3. F4 BXH3 4. BXH3 EXF4 1-0
0-1 будет означать черный выигранный и был бы таким:
- NH3 D5 2. G3 E5 3. F4 BXH3 4. BXH3 EXF4 0-1
Пожалуйста, игнорируйте * в заголовке, я только хочу изменить содержимое текстового файла.
Это, я хочу сделать это потому, что, сохраняя его из любого из 1/2-1 / 2
или 1-0
или 0-1
I сможет сделать шахматный двигатель полагать, что игра была нарисована или потеряна или выиграна, с помощью которой. Это было бы очень полезно. Я очень благодарю вас за помощь мне. Большое спасибо.
Редактировать: Существует 2000+ файлов. Причина, по которой я хочу сделать это, это потому, что найти новинки и новые линии (никогда не играли раньше) в меньших играх в вариантах игры. Это то, что я хочу достичь этой операции.
With gawk
. Установите его первым:
sudo apt install gawk
Вы можете заменить последний символ в строке на пробел, за которым следует 1/2-1/2 так:
for f in *.txt
do
gawk -i inplace '{gsub(/.$/," 1/2-1/2")}1' "$f"
done
Запустите код из каталога, содержащего Ваши файлы .txt
.
Вы можете изменить то, что находится внутри кавычек " 1/2-1/2"
заметьте ведущее место после первой кавычки на, например, " 1-0"
или " 0-1"
Вы можете изменить .$
на *$
, чтобы заменить только последний *
вместо того, чтобы заменять любой последний символ в строке.
Вы можете удалить последний символ в файле, если он *
, следуя следующим образом: https://stackovflow.com/questions/27305177/how-can-i-remove-te -Ласт-символ-оф-файл-in-unix . Я немного изменил его, чтобы заменить его с чем-то другим:
for f in *.txt; do
sed -i.bak '$ s/\*$/ 1-0/' $f
done
Это добавляет текст только тогда, когда *
находится в конце последней строки, как вы указали в вашем вопросе. Это также делает копию оригинальных файлов с расширением .Bak
. Удалить .bak
, если вы не хотите резервные файлы.
Вы можете загрузить его из репозитория Debian Jessie и установить по терминалу:
cd ~/Downloads
wget -c http://archive.ubuntu.com/ubuntu/pool/main/g/glibc/multiarch-support_2.27-3ubuntu1.4_amd64.deb
wget -c http://ftp.debian.org/debian/pool/main/libx/libxp/libxp6_1.0.2-2_amd64.deb
sudo apt-get install ./multiarch-support_2.27-3ubuntu1.4_amd64.deb ./libxp6_1.0.2-2_amd64.deb
-121--909694- Вы можете попытаться установить его вручную, загрузив пакет из репозиториев 16,04 LTS :
cd ~/Downloads
wget -c http://archive.ubuntu.com/ubuntu/pool/main/n/newt/libnewt0.52_0.52.18-1ubuntu2_amd64.deb
wget -c http://archive.ubuntu.com/ubuntu/pool/universe/p/python-dmidecode/python-dmidecode_3.12.2-2_amd64.deb
wget -c http://archive.ubuntu.com/ubuntu/pool/universe/p/python-ethtool/python-ethtool_0.11-3_amd64.deb
wget -c http://archive.ubuntu.com/ubuntu/pool/universe/p/python-gudev/python-gudev_147.2-3_amd64.deb
wget -c http://archive.ubuntu.com/ubuntu/pool/main/n/newt/python-newt_0.52.18-1ubuntu2_amd64.deb
wget -c http://archive.ubuntu.com/ubuntu/pool/universe/r/rhnlib/python-rhn_2.5.55-2_all.deb
wget -c http://archive.ubuntu.com/ubuntu/pool/universe/r/rhn-client-tools/rhn-client-tools_1.8.26-4_amd64.deb
sudo apt install ./rhn-client-tools_1.8.26-4_amd64.deb ./python-rhn_2.5.55-2_all.deb ./python-ethtool_0.11-3_amd64.deb ./python-newt_0.52.18-1ubuntu2_amd64.deb ./python-dmidecode_3.12.2-2_amd64.deb ./python-gudev_147.2-3_amd64.deb ./libnewt0.52_0.52.18-1ubuntu2_amd64.deb
Для предотвращения модернизации пакета libnewt0.52
необходимо закрепить его версию с помощью следующей команды:
cat <<EOF | sudo tee /etc/apt/preferences.d/pin-newt
Package: libnewt0.52
Pin: version 0.52.18-1ubuntu2
Pin-Priority: 1337
EOF
Примечание. Для возврата к изменениям удалите указанный выше файл с помощью sudo rm/etc/apt/preferences.d/pin-night
и обновите все пакеты с помощью sudo apt-get update & & sudo apt-get dist-upgrade
.
Технически это можно сделать с помощью вызова sed
...
# Note we have to escape the slashes to work with regex / sed here.
REPLACEWITH="1\/2-1\/2" # or "0-1", or "1-0" depending on your intention
sed -i.orig "s/\*$/${REPLACEWITH}/g" FILENAME
... это найдет все экземпляры конца строк с *
на них и заменит их обозначением конца игры, которое вы хотите использовать. Просто убедитесь, что в обозначении имеются символы /
, и замените /
на \/
, чтобы оно было правильно удалено для sed
и оболочки для работы.