"text";"text";"text";"text";;"text";"text"
如果在第4个分隔符之后,下一个分隔符将在该行之后删除。
实际上我是通过使用sed
来做到这一点的sed -n '/;;/!p' input.txt
这是一个可靠的解决方案吗?
感谢您的帮助。
答案 0 :(得分:1)
保护有点潜在的双重报价和内部";" (感谢@SLePort发表评论)
sed -e 'h;s/\\"//g' -e ':c' -e 's/^\(\("[^"]*";\)*"[^"]*\);/\1/;t c' -e '/^\([^;]*;\)\{4\};/d;h'
答案 1 :(得分:0)
在第四个分隔符后删除包含;
的行:
sed '/^\("*[^"]*"*;\)\{4\};/d' input.txt
答案 2 :(得分:0)
sed -r '/^([^;]+;){4}\s*;/d' input.txt
awk -F';' '$5' input.txt
答案 3 :(得分:0)
这可能适合你(GNU sed):
sed -r '/^("(\\.|[^"])*";){4};/d' file
如果第四组双引号后跟半冒号,其中分组中的字符是一对引号和任何其他字符或不是双引号,则后跟另一个半冒号,然后删除该行
更有效的正则表达式是:
sed -r '/^("[^"\\]*(\\.[^"\\]*)*";){4};/d' file
这使用模式 正常 *( 异常 正常 强> *)*