在先前有效的代码中无故出现问题。
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文件在Excel 2007中保存为" CSV(DOS)"
将其保存为" CSV"它工作=>编码是不同的
否则,当在vim中打开它时,执行:e ++ enc = utf16以使用UTF-16编码重新加载文件,然后(假设nullbytes消失)执行:set fenc = utf-8并保存文件。 (谢谢你@L3viathan的回答)
答案 0 :(得分:4)
我认为你的编码搞砸了。您的文件可能使用UTF-16编码保存,但由于某种原因缺少字节顺序标记(0xFEFF
)。
在vim中打开它后,执行:e ++enc=utf16
以使用UTF-16编码重新加载文件,然后(假设nullbytes消失)执行:set fenc=utf-8
并保存文件。