1

我有一个非常愚蠢的问题,我以为我可以很容易地回答自己……好吧,我做不到。

我有一个文件";"分隔如下:

Grand Hotel  ;Yes;No availability;Dus ;11; . 130,00 ;No availability;500 mt from Arena;

我必须将它打印在一个文件中(将其移动到 Excel 中),如下所示:

大酒店
是的
没有可用性
...等等等等

如此简单,我只是找不到一个非常简单的解决方案。因为我正在使用 Debian Bash shell 环境,所以我正在尝试任何东西(bash 脚本、awk、grep)......没有任何效果。请帮忙。M。

4

3 回答 3

3

所以基本上你想将带有表格行的文件转换F1;F2;F3;...;FN为:

 F1
 F2
 F3
 ...
 FN

我们可以使用 tr(1) 将分号转换为换行符:

tr ';' '\n' < infile

其中“infile”是 CSV 输入文件的名称。

于 2013-04-11T10:10:01.687 回答
1

怎么样sed

echo '....' | sed 's/;/\n/g'
于 2013-04-11T10:10:01.637 回答
1

假设您的文件长于一行,当所有字段都在单独的行中时,新的记录分隔符是什么?

这段 awk 会将每个字段写入一个新行,并在每个记录之间添加一个空行。

awk 'BEGIN {FS=";"; OFS="\n"; ORS="\n\n"} {$1=$1} 1'

需要奇数$1=$1位来强制 awk 用新的分隔符重写 $0(即当前记录)。

例子:

$ awk 'BEGIN {FS=";"; OFS="\n"; ORS="\n\n"} {$1=$1} 1' << END
a;b;c
d;e;f
END

输出

a
b
c

d
e
f
于 2013-04-11T22:37:31.823 回答