Я имею файл 1 ГБ и хотел бы преобразовать его в определенный формат. Файл содержит следующие URL:
google.com
trafficinviter.com
example.com
Я хотел бы преобразовать полное содержание в этом формате:
"http://google.com","http://trafficinviter.com","http://example.com"
Использование Ubuntu. Это - точно формат массива PHP. Таким образом, я хотел бы знать, как я могу преобразовать в этот формат и сохранить в другой файл.
Я сделал бы это в 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
удаляет последнюю запаздывающую запятую.
Вы могли сделать это как это:
tr '\n' ',' < file | sed 's#[^,]\+#"http://&"#g;s#,$#\n#'
tr '\n' ',' <file
замените новые строки запятыми в file
|
передайте вывод по каналу кs#[^,]\+#"http://&"#g
замените серию символов, исключая запятую с теми же символами, предварительно ожидаемыми http://
и окруженный "кавычками"s#,$#\n#
удалите последнюю запятую, замену новой строкойПримечание: это перестанет работать, если URL будут иметь запятые, поэтому если это возможно в Вашем случае, используйте ответ terdon для надежных результатов
awk '{ printf("\"%s\",", $0) }' input.txt
PHP позволяет завершать запятые в литералах массивов, если я вспоминаю правильно.