Извлечение некоторых текстов из файла txt и добавление в существующий файл bash

Я столкнулся с той же проблемой и попробовал разные способы, предложенные вhttps://bugs.launchpad.net/linuxmint/+bug/1652489

В любом случае, решение для меня состояло в том, чтобы установить пакет Xscreensaver . Его описание гласит: «установите этот пакет, если вы предпочитаете xscreensaver gnome -screensaver »:-)

Теперь я могу заблокировать экран и вернуться обратно без проблем.

0
22.08.2019, 01:24
2 ответа

Если я вас правильно понял, это мое предложение:

for i in record*.txt; do
  xyz=$(grep -oP "(?<=RESULT ).*(?=\*\*\*)" $i)
  sed -i "1 iX Y Z\n$xyz\n" summary${i//record/}
done

Перебрать файлы с именамиrecord*.txt

for i in record*.txt; do

Захват строки между RESULTи***

xyz=$(grep -oP "(?<=RESULT ).*(?=\*\*\*)" $i)

Добавить X Y Z в первую строку после захваченного шаблона в файлеsummary*.txt

sed -i "1 iX Y Z\n$xyz\n" summary${i//record/}
0
28.01.2020, 03:20

Это простое объединение строки с фиксированным текстом(X Y Z)и части одной строки из одного файла(SummaryX.txt)и всего содержимого другого файла с родственным именем файла(recordX.txt)

#!/bin/sh

for sfile in Summary*.txt; do
  rfile="$(echo "$sfile" | sed -e 's/^Summary/record/')"
  ofile="$rfile.new"

  {
    echo X Y Z

    sed -E -n -e 's/^.*RESULT ([0-9.]+ [0-9.]+ [0-9.]+).*/\1/p' "$sfile"
    echo

    cat "$rfile"
  } > "$ofile"

  # uncomment the following to replace the original record file with the new one.
  # mv -f "$ofile" "$rfile"
done

Вы не указали, какую оболочку вы используете, поэтому здесь не используются какие-либо специфические для bash -манипуляции со строками или другие возможности. Он должен работать с любой оболочкой, совместимой с sh -.

Вывод будет сохранен в recordX.txt.new, если вы не раскомментируете строку mv. Это делается для того, чтобы вы могли убедиться, что он делает то, что вы хотите, до того, как он уничтожит ваши исходные входные файлы, (вы все равно должны работать с резервными копиями, когда делаете что-то потенциально разрушительное ).

$ cat record1.txt.new 
X Y Z
111.114 30.344 90.3454

11111 absda qwedc
11112 uiyds dqeds
11113 eqwev jfsec...
0
28.01.2020, 03:20

Теги

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