我试图擦洗成一个正确格式的 CSV 文件的数据库导入一些列表。
我的起始文件看起来像这样,每个“行”应该跨越多行,如下所示
Mr. John Doe
Exclusively Stuff, 186
Caravelle Drive, Ponte Vedra
33487.
我创建了一个 sed
脚本来清理文件(有很多“脏”格式,比如逗号前后的双空格和空格)。我想改变一个新的行,但我不能得到它的工作期间。
我使用的命令是:
sed -E -f scrub.sed test.txt
scrub.sed
脚本如下:
:a
N
s|[[:space:]][[:space:]]| |g
s|,[[:space:]]|,|g
s|[[:space:]],|,|g
s|\n| |g
s|[[:space:]]([0-9]{5})\.|,FL,\1\n |g
$!ba
我得到的是
Mr. John Doe,Exclusively Stuff,186 Caravelle Drive,Ponte Vedra,FL,33487n
如果想到 Zip + 。(句号)将是一个很好的“分隔符”来使用替换,虽然我可以找到它,但我似乎不能告诉它在那里放一个换行符。
我在网上找到的大多数东西都是关于用其他东西替换换行符(通常是删除它们) ,但是没有多少是关于用换行符替换的。我确实找到了这个,但是不管用: 如何在’中的逗号后插入换行符,(’使用 sed?
我是不是遗漏了什么?
更新:
我按照指示编辑了我的 scrus.sed 文件,放入了文字的新行,但仍然不能工作
:a
N
s|[[:space:]][[:space:]]| |g
s|,[[:space:]]|,|g
s|[[:space:]],|,|g
s|\n| |g
s|[[:space:]]([0-9]{5})\.|,FL,\1\
|g
$!ba
我得到的是(所有东西都在一条线上) :
Mr. John Doe,Exclusively Stuff,186 Caravelle Drive,Ponte Vedra,FL,33487 Mrs. Jane Smith,Props and Stuff,123 Main Drive,Jacksonville,FL,336907
我的预期产出应该是:
Mr. John Doe,Exclusively Stuff,186 Caravelle Drive,Ponte Vedra,FL,33487
Mrs. Jane Smith,Props and Stuff,123 Main Drive,Jacksonville,FL,336907