Linux 使用awk或sed删除.csv中第四列和第五列的第一个字符
我有一个具有以下值的.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/,""
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
?