我有一个 1 GB 的文件,想将其转换为某种格式。该文件包含以下 URL:
google.com
trafficinviter.com
example.com
我想转换以下格式的完整内容:
"http://google.com","http://trafficinviter.com","http://example.com"
使用 Ubuntu。这正是 PHP 数组的格式。所以我想知道如何转换为这种格式并保存到另一个文件。
答案1
我将在 Perl 中这样做:
$ perl -lne 'printf "\"http://$_\","' file | sed 's/,$/\n/'
"http://google.com","http://trafficinviter.com","http://example.com"
删除-l
每行末尾的换行符(还会\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"
这里,第一个sed
将用 替换每行的开头(^
) ,用 替换"http://
每行的结尾( ) ;用逗号替换每个换行符,第二个将删除最后一个尾随的逗号。$
"
tr
sed
答案2
你可以这样做:
tr '\n' ',' < file | sed 's#[^,]\+#"http://&"#g;s#,$#\n#'
解释
tr '\n' ',' <file
用逗号替换换行符file
|
管道输出至s#[^,]\+#"http://&"#g
将一系列字符(不包括逗号)替换为前面http://
和后面带有“引号”的相同字符s#,$#\n#
删除最后一个逗号,用换行符替换
注意:如果 URL 中有逗号,此操作将会失败,因此,如果您的情况可能如此,请使用terdon 的回答获得可靠的结果
答案3
Awk 解决方案
awk '{ printf("\"%s\",", $0) }' input.txt
如果我没记错的话,PHP 允许在数组文字中终止逗号。