Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何阻止bash在vim中的每个字母前添加^@_Bash_Csv_Vim - Fatal编程技术网

如何阻止bash在vim中的每个字母前添加^@

如何阻止bash在vim中的每个字母前添加^@,bash,csv,vim,Bash,Csv,Vim,在以前正常工作的代码中,无故出现问题 myfile.csv中有一些数据 MP 0,20,60,200,60,95,100,1,20,50,30,20,20,250,115,200,0,8,85,150,465817 MP 1,17.89,60,200,60,93.945,100,1,20,50,30,20,20,250,115,200,0,10,85,150,465927 MP 2,16.33,60,200,60,93.16,100,1,20,50,30,20,20,250,115,200,

在以前正常工作的代码中,无故出现问题

myfile.csv中有一些数据

MP 0,20,60,200,60,95,100,1,20,50,30,20,20,250,115,200,0,8,85,150,465817

MP 1,17.89,60,200,60,93.945,100,1,20,50,30,20,20,250,115,200,0,10,85,150,465927

MP 2,16.33,60,200,60,93.16,100,1,20,50,30,20,20,250,115,200,0,12,85,150,464987

MP 3,15.12,60,200,60,92.56,100,1,20,50,30,20,20,250,115,200,0,14,85,150,463440

...
我提取了文件的最后25行

tail -n 25 myfile.csv > test1.txt
当我这样做的时候

cat test1.txt

...
MP 16,20,60,200,60,95,100,1,20,120,30,20,20,250,115,200,0,8,85,150,529469
MP 17,20,60,200,60,95,100,1,20,130,30,20,20,250,115,200,0,8,85,150,534335
没问题。。。但我想进入文本编辑器,每个字母前面都有^@:

vim test1.txt

^@M^@P^@ ^@0^@,^@2^@0^@,^@6^@0^@,^@2^@0^@0^@,^@6^@0^@,^@9^@5^@,^@1^@0^@0^@,^@1^@,^@2^@0^@,^@5^@0^@,^@3^@0^@,^@2^@0^@,^@2^@0^@,^@2^@5^@0^@,^@1^@1^@5^@,^@2^@0^@0^@,^@0^@,^@8^@,^@8^@5^@,^@1^@5^@0^@,^@4^@6^@5^@8^@1^@7^@
问题是你想做一个模式搜索(这行的第一个词),但因为这个原因,它似乎不起作用

home > awk '/MP 0/{print}' test1.txt
home > 
此外,我想在我的awk中加入一个参数:

home > cat mp
0
home > awk "/MP `cat mp`,/{print}" test1.txt
home > 
你知道这个错误是从哪里来的吗

多谢各位

编辑 .csv文件以“csv(DOS)”格式保存在Excel 2007中

通过将其保存为“CSV”,它可以工作=>编码是不同的


否则,在vim中打开它时,do:e++enc=utf16以使用UTF-16编码重新加载文件,然后(假设空字节消失)do:set fenc=UTF-8并保存文件。(谢谢@L3viathan的回答)

我认为你的编码搞错了。您的文件可能是使用UTF-16编码保存的,但由于某些原因,字节顺序标记(
0xFEFF
)丢失


在vim中打开文件后,执行
:e++enc=utf16
以使用UTF-16编码重新加载文件,然后(假设空字节消失)执行
:设置fenc=UTF-8
并保存文件。

您的输入文件是没有BOM的UTF-16编码文件吗?停止复制Windoze文件并尝试在vim中打开它们???要清除
vim
中的DOS行结尾,请使用
:%s/[ctrlkey+v和ctrl+M]//g
,也就是说,按
然后写
%s/
现在是两个控制序列,然后按
//g
,最后的替换看起来像
:%s/^v^M//g
,然后按return,您知道如何以及在哪里可以检查它吗?请尝试以下方法,cat yourFile.txt | tr-d'\a\b\r'>new@DavidC.Rankin命令:%s/[ctrlkey+v和ctrl-key+M]//g起作用了,谢谢:)。我认为错误来自于保存在excel中的.csv文件,该文件的选项是“csv(DOS)”而不是“csv”。当我尝试使用“CSV”时,没有问题。
vim+'e++enc=utf16 | set-fenc=utf-8 | x”输入应该可以在没有交互的情况下完成。它确实有效:)多亏了你的评论,我发现了问题:该.CSV文件在excel中保存为“CSV(DOS)”而不是CSV。我想这两种格式的编码是不同的。谢谢@andlrc和L3viathan