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