Запись нескольких строк с переменными в файл

sed '/something interesting/,$d' < file > newfile

Который можно оптимизировать до:

sed -n '/something interesting/q;p' < file > newfile

для sed, чтобы выйти, как только он найдет шаблон.

Что с реализацией GNU sed, как отмечает @RakeshSharma, может быть упрощено до

sed '/something interesting/Q' < file > newfile

Чтобы обрезать файл в месте -с ksh93вместо bash, вы можете сделать:

printf '' <>; file >#'*something interesting*'
  • <>;подобен стандартному оператору перенаправления <>(, открытому в режиме чтения+записи ), за исключением того, что файл усекается в конце, если команда выполнена успешно.
  • <#patternвыполняет поиск начала следующей строки, соответствующей шаблону.

(обратите внимание, что он работает (с ksh93u+ по крайней мере )с printf ''на стандартном выводе, но не с некоторыми другими встроенными командами, такими как true, :или eval. Похоже на ошибку . Также это не может быть последняя команда скрипта(другая ошибка)).

0
15.10.2020, 16:51
2 ответа

Правильный путь:

sudo sh -c "cat >> /etc/grafana/provisioning/datasources/InfluxDB.yaml << 'EOL'
 apiVersion: 1
 datasources:
  - name: $dbname
    type: influxdb
    url: http://localhost:8086
    user: $usrname
    password: $pssword
    database: $dbname
    access: proxy
    editable: true
    isDefault: true
EOL"

Если вы хотите перезаписать файл, вы должны использовать «>» после команды cat вместо «>>».

1
18.03.2021, 22:57

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

dbname=db
usrname=user
pssword=pass

sudo cat << EOL >> /etc/grafana/provisioning/datasources/InfluxDB.yaml
 apiVersion: 1
 datasources:
  - name: $dbname
    type: influxdb
    url: http://localhost:8086
    user: $usrname
    password: $pssword
    database: $dbname
    access: proxy
    editable: true
    isDefault: true
EOL

Выход:

cat /etc/grafana/provisioning/datasources/InfluxDB.yaml

 apiVersion: 1
 datasources:
  - name: db
    type: influxdb
    url: http://localhost:8086
    user: user
    password: pass
    database: db
    access: proxy
    editable: true
    isDefault: true
0
18.03.2021, 22:57

Теги

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