#powershell #replace
#powershell #заменить
Вопрос:
Я пишу скрипт для подготовки csv-файла для его загрузки в SQL.
У меня есть две почти идентичные команды (1 и 3), но первая не работает, а третья работает. Ошибки нет, она просто не выполняет то, что я ожидаю от нее.
Я делаю 3 шага, сначала я избавляюсь от всех каналов в исходном файле (это то, что не работает), затем я читаю и записываю CSV (это избавляет от различной обработки с использованием кавычек и без использования кавычек, и это меняет разделитель на каналы). Наконец, я избавляюсь от всех кавычек, поскольку не должно быть других каналов, кроме разделителей.
# ---------------------------------------------------------
# 1. Get rid of all pipes
#----------------------------------------------------------
get-content ($csvfile ".csv") | ForEach-Object { $_ -replace "|",""} | Set-Content ($csvfile "2.csv")
# ---------------------------------------------------------
# 2. Make standard CSV but use Pipes as delimiter
#----------------------------------------------------------
Import-csv -path ($csvfile "2.csv") -Delimiter ',' | Export-CSV -path ($csvfile " 3.csv") -Delimiter '|'
# ---------------------------------------------------------
# 3. Get rid of all Quotes
#----------------------------------------------------------
get-content ($csvfile "3.csv") | ForEach-Object { $_ -replace '"',""} | Set-Content ($csvfile "4.csv")
Части удаления одинаковы. Второй вариант работает, он удаляет все кавычки, но первый не работает, каналы все еще включены. Я пробовал разные символы, но по какой-то причине ни один из них не работает в этой позиции.
Чего мне не хватает?
Спасибо!
Ответ №1:
Просто экранируйте |
символ с
помощью like |
, как показано ниже, и он будет работать нормально; причина |
— специальный символ (символ командной строки).
get-content ($csvfile ".csv") | ForEach-Object { $_ -replace "|",""} |
Set-Content ($csvfile "2.csv")
Итак, если у меня есть ввод типа dadad|xcvxvv|sdffgfg
then после команды, вывод будет выглядеть так dadadxcvxvvsdffgfg
Комментарии:
1. Большое вам спасибо! Это было так. Мне жаль, что я не подумал об этом раньше.