每n行添加双引号并删除现有换行符

时间:2014-12-16 13:48:42

标签: macos csv text sed

我有一台Mac,想要创建一个CSV并用双引号分隔每行5行,然后删除每行中的现有换行符。

例如,我想转换以下文字:

My
Name
is
Michael
I'm
25
Years
Old

以下文字:

"My Name is Michael"
"I'm 25 Years Old"

可以使用Numbers,TextEdit,任何在线工具,任何免费软件,SED命令或任何工具来完成吗?

由于

3 个答案:

答案 0 :(得分:0)

这不会赢得任何高尔夫比赛,但是:

perl -0777 -pe 's/(.*)\n(.*)\n(.*)\n(.*)\n/"$1 $2 $3 $4"\n/g' input-file

肯定有一种更清洁的方法可以做到这一点,但这至少更为通用:

perl -wle 'while(!eof){ undef $a; 
    $a .= <> for(1..4); $a =~ s/\n/ /g; 
    chop $a; print "\"$a\""}' input

答案 1 :(得分:0)

使用awk - 在第4行打印连接字符串s

awk 'BEGIN {n=0;s=""} 
    {
      if (s=="") s=$0; # first field should not have leading space
      else s=s " " $0;

      if (!(++n % 4))  # after 4 lines print concatenated string
      { 
         printf("\"%s\"\n" , s); s="";} 
      }' textfile

答案 2 :(得分:0)

这是一个简短的awk

awk 'NR%4==1 {printf "\""} {ORS=NR%4?" ":"\""RS} 1' file
"My Name is Michael"
"I'm 25 Years Old"