awk无法删除特定列中的新行字符

awk无法删除特定列中的新行字符,awk,Awk,我正在尝试使用awk删除csv文件第一列中的换行符,但它似乎不起作用 示例文件: "This is a test ","Something","Something" "This is another test","something","something" "One more test","something","something" 我使用的命令是 awk -F, '{gsub("\n","",$1); print}' sample 输出不会删除新行字

我正在尝试使用awk删除csv文件第一列中的换行符,但它似乎不起作用

示例文件:

  "This
  is a test
  ","Something","Something"
  "This is
  another
  test","something","something"
  "One
  more
  test","something","something"
我使用的命令是

awk -F, '{gsub("\n","",$1); print}' sample
输出不会删除新行字符

我正在寻找一个使用awk而不是sed或perl的解决方案

有人能帮忙吗

所需的输出是

"This is a test","something","something"
"This is another test","something","something"
"One more test","something","something"

假设您拥有的是从Excel或其他一些windows工具导出的CSV(因为它看起来就是这样),因此它有
\r\n
行结尾,您所需要的就是GNU awk用于多字符:

$ awk -v RS='\r\n' -F'\n' '{$1=$1}1' file
"This is a test ","Something","Something"
"This is another test","something","something"
"One more test","something","something"
否则,对于GNU awk for multi char RS,这将适用于您发布的示例:

$ awk -v RS='"\\s+("|$)' -F'\n' '{$1=$1; gsub(/^"?|"?$/,"\"")}1' file
"This is a test ","Something","Something"
"This is another test","something","something"
"One more test","something","something"

展示最终的结果我试过了,它仍然在向我展示同一行中的所有内容。当我进行八进制转储时,我没有看到回车。那么我对您输入的假设是错误的。你从哪里得到这样的CSV?无论如何,我已经添加了一个适用于您的示例的gawk脚本。您可以在以csv格式导出windows事件日志时创建类似的csv文件。某些事件的描述包含多行类似于我上面指定的格式。我从未听说过任何Windows工具创建CSV或任何其他没有
\r\n
行结尾的文本文件,您确定没有在其上运行
dos2unix
或类似命令吗?这是我用来生成CSV文件的命令,$start=Get Date-Day-12-Month 03-Year 2017$end=Get Date-Day-16-Month 03-Year 2017 Get WinEvent-FilterHashtable@{Logname=“System”;starttime=$start;endtime=$end;}导出Csv-路径c:\System-$(主机名).Csv