我正在学习正则表达并需要一些帮助。如果有人能帮我解决这个问题,我将不胜感激。我在这种格式的文本文件中有大约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>
将所有记录拉到一行。
答案 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