Linux 使用awk或sed删除.csv中第四列和第五列的第一个字符

Linux 使用awk或sed删除.csv中第四列和第五列的第一个字符,linux,bash,unix,awk,sed,Linux,Bash,Unix,Awk,Sed,我有一个具有以下值的.csv文件: N0012,17/01/20,13:31:42,N52:01:58,E004:19:00 我需要从第四列和第五列中删除N和E。 因此,输出为: N0012,17/01/20,13:31:42,52:01:58,004:19:00 我确实试过使用 awk '{gsub(/\N|\;/,$4)}1' file 但它也会从第一列中删除第一个N 所以我需要一些帮助。提前谢谢 你能试试下面的吗 awk 'BEGIN{FS=OFS=","} {sub(/^N/,""

我有一个具有以下值的.csv文件:

N0012,17/01/20,13:31:42,N52:01:58,E004:19:00
我需要从第四列和第五列中删除N和E。 因此,输出为:

N0012,17/01/20,13:31:42,52:01:58,004:19:00
我确实试过使用

awk '{gsub(/\N|\;/,$4)}1' file
但它也会从第一列中删除第一个N


所以我需要一些帮助。提前谢谢

你能试试下面的吗

awk 'BEGIN{FS=OFS=","} {sub(/^N/,"",$4);sub(/^E/,"",$5)} 1' Input_file
awk 'BEGIN{FS=OFS=","} {sub(/^[[:alpha:]]/,"",$4);sub(/^[[:alpha:]]/,"",$5)} 1' Input_file
如果OP想要替换任何字母(不仅仅是N或E),请尝试以下操作

awk 'BEGIN{FS=OFS=","} {sub(/^N/,"",$4);sub(/^E/,"",$5)} 1' Input_file
awk 'BEGIN{FS=OFS=","} {sub(/^[[:alpha:]]/,"",$4);sub(/^[[:alpha:]]/,"",$5)} 1' Input_file

解释:在此处添加上述代码的详细解释

awk '                ##Starting awk program from here.
BEGIN{               ##Starting BEGIN section of this awk program from here.
  FS=OFS=","         ##Setting field separator and output field separator as comma here.
}
{
  sub(/^N/,"",$4)    ##Using substitute function of awk to substitute starting N in column 4th here.
  sub(/^E/,"",$5)    ##Using substitute function of awk to substitute starting N in column 5th here.
}
1                    ##Mentioning 1 will print edited/non-edited line here.
' Input_file         ##Mentioning Input_file name here.
这可能适用于您(GNU-sed):

如果前三个字段后跟一个
N
,则用前三个字段替换匹配项


如果前四个字段后面跟着一个
E
将匹配项替换为前四个字段。

根据您发布的示例输入,这就是您所需要的:

$ sed 's/,[NE]/,/g' file
N0012,17/01/20,13:31:42,52:01:58,004:19:00
或者,如果您更喜欢awk:

$ awk '{gsub(/,[NE]/,",")}1' file
N0012,17/01/20,13:31:42,52:01:58,004:19:00

还有其他字母吗?或者只有
N
E