如何格式化CSV格式的给定内容?

时间:2014-02-01 09:02:40

标签: regex

我正在学习正则表达并需要一些帮助。如果有人能帮我解决这个问题,我将不胜感激。我在这种格式的文本文件中有大约500条记录:

"1",
"avatar",
"Fox Studios",
"2,782.3",
"760.5",
"27.3%",
"2,021.8",
"72.7%",
"2009",


"2",
"titanic",
"Paramount",
"2,186.8",
"658.7",
"30.1%",
"1,528.1",
"69.9%",
"1997",


"3",
"The Avengers",
"Disney/Buena Vista Studios",
"1,518.6",
"623.4",
"41.0%",
"895.2",
"59.0%",
"2012",

我想将这些记录格式化为CSV格式。我正在使用Notepad ++。我的想法是:

除了第一条记录之外,Earch记录之间有三个[\ r \ n]。 如果行有三个[\ n \ r]然后将其视为新记录

,我可以算一个表达式吗? 我用Google搜索并发现了不少表情但没有取得多大成功。我在记事本++中的“CNTRL + F”并找到并替换:

find: [\r\n]+
replace: <blank>

将所有记录拉到一行。

2 个答案:

答案 0 :(得分:1)

你用google搜索的东西已经被发现了。只需使用量词表示您想要三次换行字符。根据您的操作系统(或文件行结尾),您需要对其进行修改。

Windows: (\r\n){3}
Unix:    \n{3}
Mac:     \r{3}

将替换设置为:{\ n}

然后在整个文件中进行搜索/替换。

See here有关正则表达式的解释。

答案 1 :(得分:0)

或者,如果您实际上不想使用awk来解决问题,则可以使用grep

awk 'BEGIN {RS ="\n\n\n"; FS="\n"} {print $1, $2, $3, $4, $5, $6, $7, $8, $9 }' yourdata.txt

awk 'BEGIN {RS ="\n\n\n"; FS="\n"} {print $1, $2, $3, $4, $5, $6, $7, $8, $9 }' yourdata.txt > yourdata.cvs

RS - &gt;记录分隔符; FS - &gt;场分离器; $n - &gt;字段#n