Emi*_*aga 3 sed awk text-processing tr
我有这个文件:
'dog', 'cat', 'horse', 'turtle'
我想将该行转换为:
dog
cat
horse
turtle
Run Code Online (Sandbox Code Playgroud)
如果我只使用逗号作为分隔符和命令 tr 我可以这样做:
tr -s ',' '\n' < file
与输出
'dog'
'cat'
'horse'
'turtle'
Run Code Online (Sandbox Code Playgroud)
但是当我用作', '分隔符时,这不起作用:
tr -s '\', \'' '\n' < file
即使我使用双反斜杠来转义单引号,它仍然不起作用。我在终端中得到的唯一输出是>.
如何正确转义单引号以获得所需的输出?
将输入视为带引号的 CSV,在每个逗号分隔符后添加可跳过的空格,并使用单引号而不是标准双引号作为引用字符,我们可以用来csvformat重新格式化数据:
$ csvformat -S -q "'" -D $'\n' file
dog
cat
horse
turtle
Run Code Online (Sandbox Code Playgroud)
这使用csvformatwith-S跳过每个分隔符后的初始空白字符,-q "'"将输入引用字符设置为单引号,然后将-D $'\n'输出字段分隔符设置为换行符。
然后该文件将被重新格式化。
任何使用嵌入换行符的字段都将在输出中被引用,就像包含嵌入双引号的字段一样。