nik*_*tsa 2 regex unix bash awk sed
我试图在 Unix 中弄清楚以下内容。
我有一个csv文件分为几列,其中一些列有一些带有换行符的文本。通常文本以引号开头和结尾。我想消除引号之间的那些换行符,以便文本显示在一行中。
例如内容如下所示:
HEADER1, HEADER2, HEADER3, HEADER4
data1, data2, data3, "Text here with
new line
characters"
Run Code Online (Sandbox Code Playgroud)
我希望它显示如下:
HEADER1, HEADER2, HEADER3, HEADER4
data1, data2, data3, "Text here with new line characters"
Run Code Online (Sandbox Code Playgroud)
我尝试使用awk和等工具sed,但运气不佳。
感谢任何帮助
ORS当行中的引号不平衡时,可以切换 ,替换引用文本中的新行。它不适用于 C 样式的转义引号\",但 CSV 文件中转义引号的正常样式可以使它们保持平衡""(RFC4180 2.7)。
awk -F'"' 'NF&&NF%2==0{ORS=ORS==RS?" ":RS}1' file.csv
Run Code Online (Sandbox Code Playgroud)