Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.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 用csv文件中的特殊符号替换字符串_Bash_Shell_Csv - Fatal编程技术网

Bash 用csv文件中的特殊符号替换字符串

Bash 用csv文件中的特殊符号替换字符串,bash,shell,csv,Bash,Shell,Csv,我有一个csv文件/tmp/test.csv,其中包含以下内容 VM,Datacenter,Cluster,Host,Folder,OS,VM ID,VM UUID,vCenter UUID A0F0US014XVM022,"/AMMWDC04_DC/A0F0 <96> AA DR","Red Hat Enterprise Linux 6 (64-bit)",vm-2910,421f2eba-8b60-6166-3b56-f22e3f71eecf,94694731-df3a-4ee6

我有一个csv文件/tmp/test.csv,其中包含以下内容

VM,Datacenter,Cluster,Host,Folder,OS,VM ID,VM UUID,vCenter UUID
A0F0US014XVM022,"/AMMWDC04_DC/A0F0 <96> AA DR","Red Hat Enterprise Linux 6 (64-bit)",vm-2910,421f2eba-8b60-6166-3b56-f22e3f71eecf,94694731-df3a-4ee6-9962-49df97a6f08d

下面的
sed
可能会对您有所帮助

sed 's/\([^<]*\)\(<.*>\)\(.*\)/\1-\3/'  Input_file

这是hexdump中的重要部分:

000000 F020 96 2041 41 20 44 52 22 2c 22 52 65 64 20 48 |。AA DR“,”红色H|

我建议:

sed -i 's/ \x96 /-/' file

检查您的文件中是否有特殊字符:
cat-A文件
A0F0 M-^V AA DR
grep vm-2910文件的输出| hextump-C
添加到您的问题中。此操作已删除,但未添加
-
。这是该列的输出,
A0F0 AA DR
@aaj,
A0F0US014XVM022,“/AMMWDC04_DC/A0F0-AA DR”,“Red Hat Enterprise Linux 6(64位)”,vm-2910421f2eba-8b60-6166-3b56-f2e3f71eecf,94694731-df3a-4ee6-9962-49df97a6f08d
我理解正确。我不知道为什么,但这两个查询都没有添加-在我的末尾。我正在输出到控制台…未使用
-I
如何解释此输出?将
替换为
。如何理解
\x96
在这里的用法。20 96 20是一个空格、一个值为96(十进制150)的字节和一个空格的十六进制表示。在右侧,不可打印字符(十六进制96)由点表示
\x96
是指十六进制值为96的字节。
\x96
可能无法移植到所有版本的
sed
。奇怪的是,最可移植的解决方案可能是使用Perl
perl-i~-pe的/\x96/-/g'文件
(其中,
/g
仅当一行可能包含多个引用时才是必需的,就像在
sed
中一样)。
sed 's/\r//g;s/\([^<]*\)\(<.*>\)\(.*\)/\1-\3/'   Input_file
sed -i 's/ \x96 /-/' file