Shell 使用sed从CSV中删除列

Shell 使用sed从CSV中删除列,shell,sed,Shell,Sed,我有一个文件,其中字段用双引号封装-文件的一般示例: "Internal ID", "External ID", "Name" "123", "ABC", "ABC Incorporated" 所需结果,删除第一列并以相同名称保存文件: "External ID", "Name" "ABC", "ABC Incorporated" 能否修改上述sed以处理“,”分隔符?如果是,怎么做?还是有更好的选择?仍然是一个空壳机器人,但我尝试了以下方法,但没有成功: sed -i 's/[^'

我有一个文件,其中字段用双引号封装-文件的一般示例:

"Internal ID", "External ID", "Name"
"123", "ABC", "ABC Incorporated"
所需结果,删除第一列并以相同名称保存文件:

"External ID", "Name"
"ABC", "ABC Incorporated"
能否修改上述sed以处理“,”分隔符?如果是,怎么做?还是有更好的选择?仍然是一个空壳机器人,但我尝试了以下方法,但没有成功:

    sed -i 's/[^'\"','\"']*,//' file.csv
非常感谢您的帮助。

快捷方式:

sed 's/[^,]*,\s*//' file
"External ID", "Name"
"ABC", "ABC Incorporated"

注意:如果您的字段包含类似逗号的
“ABC,DEF”,“ABC Incor..”

您可以尝试下面的sed命令

$ sed 's/^.*\(".*", ".*"\)$/\1/' file
"External ID", "Name"
"ABC", "ABC Incorporated"
它打印最后两个值

$ sed 's/^"[^"]*", //' file
"External ID", "Name"
"ABC", "ABC Incorporated"

它删除逗号分隔字符串中的第一个值。

这是
cut
的作业

 cut -d, -f 2- < file.csv
使用Awk:

awk -F", " '{print substr($0, index($0,$2))}' file > tmp && mv tmp file

是否要删除第一列?是的,第一列将被删除。+1,但当正则表达式被锚定时,不需要
g
——它每行只能匹配一次。
awk -F", " '{print substr($0, index($0,$2))}' file > tmp && mv tmp file