【发布时间】:2013-12-10 18:30:23
【问题描述】:
我有一个由 IBM 从 Z/OS 更改数据交付生成的平面文件。数据中有新行或\n。我找到了一种使用 awk 命令替换其中大多数的方法,但似乎有一个小错误。如果有奇数个引号的行以引号结尾,则不会将\n 替换为空格。无论出于何种原因,我不得不循环两次才能获得其中的大部分。我留下了 1 条记录,其中仍有 \n。这是一个示例。
"2013-11-19 10:09:09","0","I","NOT SET ","
simple string "
本质上需要:
"2013-11-19 10:09:09","0","I","NOT SET ","simple string "
这是我正在使用的代码:
#For loop#
for a in 1 2
do
awk -F'"' '$NF""{printf("%s ", $0);next}1' $1 > $1.filter
rm -f $1
mv $1.filter $1
echo $a
done
这个文件有大约 100k 条记录。它被 datastage 拾取,但看到 \n 抛出该记录,因为它认为下一行应该是新记录。
谢谢, 乔什
编辑:
我发现这个 Perl 命令可以做所有事情,但最终还是会遇到与上面相同的错误。
$ perl -p -le 's/\n+/ /g'
【问题讨论】:
-
只是好奇:你为什么使用
$NF""而不仅仅是$NF? -
我不敢说实话。无论哪种方式,结果都是一样的。
标签: python perl shell unix aix