Номер строки, возвращаемый Select-String , начинает отсчет с 1
. Индексы массива отсчитываются от 0
, поэтому вы должны учитывать это.
Это должно работать:
$chanName = "Das Erste HD"
$newRtsp = "the new content for the line"
# Getting the file
$inFile = Get-Content "iptv.m3u"
# Linenumber where a specific channel name $chanName perhaps exists?
# SimpleMatch is an optional parameter and specifies that
# the string in the pattern is not interpreted as a regular expression.
$line = ($inFile | Select-String "tvg-name=`"$chanName`"" -SimpleMatch).LineNumber #`# dummy comment to fix code highlighting for SO
# $line will be $null if Select-String did not find the string to look for
if ($line) {
# Use actual Linenumber minus 1 as Index, to override the following line
$inFile[$line - 1] = $newRtsp
# Write back to file
$inFile | Set-Content "iptv.m3u"
}
На супер высоком уровне:
База данных - хранит необработанные данные
DataSet - объект.NET, который может использоваться для чтения, вставляет, обновляет и удаляет данные в базе данных
BindingSource - объект.NET, который может использоваться для Привязки данных для управления. BindingSource мог указать на DataSet, в этом случае управление отобразит и отредактирует те данные
TableAdapter - Данные карт из таблицы базы данных в DataSet
Существует намного больше ко всем ним, и понимание путем ADO.NET проектируется, может занять немного времени.Удачи!
DataSet обычно используется для содержания результата базы данных в памяти, т.е. он содержит Объект dataTable. DataSet и Объекты dataTable themselfs независимы от базы данных, таким образом, результат не должен прибывать из базы данных. DataSet может содержать несколько DataTables, и можно даже определить отношения между ними. Это похоже на мини-базу данных в памяти.
Обязательный источник является любым объектом, который может предоставить списку объектов со свойствами. DataSet или DataTable могут сделать это, но это мог в основном быть любой вид списка, содержащего объекты, который имеет свойства.
TableAdapter используется, чтобы считать данные с DataReader, обеспеченного Объектом команды и поместить данные в Объект dataTable.
Набор данных является (частичным) представлением в оперативной памяти базы данных. Таблицы или Представления в datatbase представлены как таблицы данных в наборе данных. dataadapter является ссылкой между базой данных и набором данных. После того как адаптер загрузил данные в набор данных, физическое соединение с набором данных расположено. Поэтому это назвало разъединенную модель данных.