我想在 Linux 中使用 sed 命令替换 CSV 文件中的 ^M\n 部分空格......
我用过sed 's/\n/ /g'
,但它只是替换 \ 而不是其他部分......
为了更具描述性,我使用类似的查询
| sed "s/'/\'/;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g" > file.csv
查询结果将收集在 csv 文件中。但我可以看到\n
csv 文件中有这些字符......我想删除它们。所以......我需要相应地更改 sed 命令......而不是\n
我应该得到空格字符......
答案1
即使在做了之后我也遇到了这个问题dos2unix
。我能够用下面的代码解决这个问题。
sed -i "s/\r/ /g" <fileName>
^M
是ctrl+r
,所以\r
用文件中的空格替换
答案2
要将文件中的 DOS 行结尾替换为空格file
:
dos2unix file
tr '\n' ' ' file >newfile
首先将文件转换为 Unix 文本文件,然后用空格替换每个换行符。结果写入新文件newfile
。
一步(不修改file
):
dos2unix <file | tr '\n' ' ' >newfile
有点不安全(因为它删除了全部文件中的回车符,即使它们不是 DOS 行结尾的一部分(file
但不修改):
tr -d '\r' <file | tr '\n' ' ' >newfile