CSV文件中的模式匹配,并附加到匹配的行

2024-09-25 18:14:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我想提取一个csv文件中与模式匹配的行,然后将相同的模式作为csv文件新添加的列添加到每个提取行的末尾。在

在文件.csv在

file.csv

/var/log/0,33,New file,0
/var/log/0,34,Size increased,2345
/abc/Repli,11,New file,0
/abc/Repli,87,Size Increase,11

In above file file.csv, I executed

^{pr2}$

这将删除剩余的行,这是我不想要的。在


Tags: 文件csvinlognewsizevar模式
3条回答

I found a solution to match paths using sed. I did it through escap character and it worked.

Pattern="\/var\/log\/Model\/1\/"Module=BEsudo sed -i"" "s/\r//; /$Pattern/ s/$/,$Module/" resultFile.csv

干得不错!!在

只提取与模式匹配的行并修改它们

要只选择包含图案的线条,然后将图案作为新列添加到行尾:

awk '/pattern/ {print $0 ",pattern"}'  file.csv >tmp$$ && mv tmp$$ file.csv

或者

^{pr2}$

保留所有行,但修改与模式匹配的行

^{3}$

或者

sed -b -i"" '/pattern/ s/$/,pattern/' file.csv

删除Windows行结尾,同时保留所有行并修改与模式匹配的行

sed -i"" 's/\r//; /pattern/ s/$/,pattern/' file.csv

删除Windows行结束符,同时保留所有行并修改与包含斜杠的模式匹配的行结束符

假设模式包含斜杠,比如/var/log/abc/file/0/。然后:

sed -i"" 's/\r//; \|pattern| s|$|,pattern|' file.csv

例如:

sed -i"" 's/\r//; \|/var/log/abc/file/0/| s|$|,/var/log/abc/file/0/|' file.csv

如果找到匹配项,下面的代码段会追加模式。如果找不到匹配的话就打印这条线

awk '{if($0 ~ /pattern/) print $0",pattern"; else print $0;}' file.csv

相关问题 更多 >