Как я могу преобразовать полный файл в определенный формат?

Я имею файл 1 ГБ и хотел бы преобразовать его в определенный формат. Файл содержит следующие URL:

google.com
trafficinviter.com
example.com

Я хотел бы преобразовать полное содержание в этом формате:

"http://google.com","http://trafficinviter.com","http://example.com"

Использование Ubuntu. Это - точно формат массива PHP. Таким образом, я хотел бы знать, как я могу преобразовать в этот формат и сохранить в другой файл.

5
задан 4 January 2017 в 05:13

3 ответа

Я сделал бы это в Perl:

$ perl -lne 'printf "\"http://$_\","' file | sed 's/,$/\n/'
"http://google.com","http://trafficinviter.com","http://example.com"

-l удаляет символы новой строки из конца каждой строки (также добавляет a \n каждому print звоните, который является, почему я использую printf вместо этого). -ne означает, "запускает скрипт, данный -e на каждой строке входного файла. Сам сценарий распечатает "http://, текущая строка ($_), и ",. Затем sed удаляет заключительную запаздывающую запятую.


С другой стороны, Вы могли сделать:

$ sed 's#^#"http://#;s#$#"#' file | tr "\n" "," | sed 's/,$/\n/'
"http://google.com","http://trafficinviter.com","http://example.com"

Здесь, 1-е sed заменит начало каждой строки (^) с "http://, и конец каждой строки ($) с a "; tr замены каждый символ новой строки с запятой и 2-м sed удаляет последнюю запаздывающую запятую.

9
ответ дан 23 November 2019 в 08:39

Вы могли сделать это как это:

tr '\n' ',' < file | sed 's#[^,]\+#"http://&"#g;s#,$#\n#'

Объяснение

  • tr '\n' ',' <file замените новые строки запятыми в file
  • | передайте вывод по каналу к
  • s#[^,]\+#"http://&"#g замените серию символов, исключая запятую с теми же символами, предварительно ожидаемыми http:// и окруженный "кавычками"
  • s#,$#\n# удалите последнюю запятую, замену новой строкой

Примечание: это перестанет работать, если URL будут иметь запятые, поэтому если это возможно в Вашем случае, используйте ответ terdon для надежных результатов

7
ответ дан 23 November 2019 в 08:39

Решение Awk

awk '{ printf("\"%s\",", $0) }' input.txt

PHP позволяет завершать запятые в литералах массивов, если я вспоминаю правильно.

5
ответ дан 23 November 2019 в 08:39

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

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