Как мы можем заменить * с 1/2-1 / 2 или 1-0 или 0-1 в конце последней строки (содержимого) каждого и каждого текстового файла в Та же каталог?

Я преуспел в нескольких операциях текстовых файлов с руководством вас друзей. Во-первых, большое спасибо за помощь мне с командами.

Теперь я хочу еще больше двигаться в этих операциях по текстовому файлу и одному из мест, которые я застрял, это я бы хотел удалить * в конце последней строки (каждого текстового файла в пределах тот же каталог) с любым 1/2-1 / 2 или 1-0 или 0-1

Это содержимое текстового файла:

enter image description here

  1. NH3 D5 2. G3 E5 3. F4 BXH3 4. BXH3 EXF4 *

и 1/2-1 / 2 представляют бы ничье, что будет выглядеть так: enter image description here

  1. NH3 D5 2. G3 E5 3. F4 BXH3 4. BXH3 EXF4 1 / 2-1 / 2

1-0 означает белый выигранный, и это было бы так: enter image description here

  1. NH3 D5 2. G3 E5 3. F4 BXH3 4. BXH3 EXF4 1-0

0-1 будет означать черный выигранный и был бы таким: enter image description here

  1. NH3 D5 2. G3 E5 3. F4 BXH3 4. BXH3 EXF4 0-1

Пожалуйста, игнорируйте * в заголовке, я только хочу изменить содержимое текстового файла.

Это, я хочу сделать это потому, что, сохраняя его из любого из 1/2-1 / 2 или 1-0 или 0-1 I сможет сделать шахматный двигатель полагать, что игра была нарисована или потеряна или выиграна, с помощью которой. Это было бы очень полезно. Я очень благодарю вас за помощь мне. Большое спасибо.

Редактировать: Существует 2000+ файлов. Причина, по которой я хочу сделать это, это потому, что найти новинки и новые линии (никогда не играли раньше) в меньших играх в вариантах игры. Это то, что я хочу достичь этой операции.

-2
задан 26 February 2021 в 05:49

4 ответа

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"

  • Вы можете изменить .$ на *$, чтобы заменить только последний * вместо того, чтобы заменять любой последний символ в строке.

1
ответ дан 18 March 2021 в 23:32
sed -s -i.org 's:\*$: 1-0:' in*files
0
ответ дан 18 March 2021 в 23:32

Вы можете удалить последний символ в файле, если он * , следуя следующим образом: 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 , если вы не хотите резервные файлы.

1
ответ дан 18 March 2021 в 23:32

Вы можете загрузить его из репозитория 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 .

-121--909679-

Технически это можно сделать с помощью вызова 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 и оболочки для работы.

2
ответ дан 18 March 2021 в 23:32

Другие вопросы по тегам:

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