我有一个这样的文件:
www,/something else/,ese
www,/something else/,aes
arc,/something else/,ese
old,/something else/,ese
我想要postfix",0"除了" www,/ else else /,aes"与",1"," old,/ something else /,ese"没有。 所以结果应该是这样的:
www,/something else/,ese,0
www,/something else/,aee,1
arc,/something else/,ese,0
old,/something else/,ese
我怎么能做到这一点?感谢。
答案 0 :(得分:0)
您可以使用此awk
,
awk -F',' '{$4="0";} $1=="www" && $3=="aes"{$4="1";} $1=="old"{NF=NF-1}1' OFS=, yourfile
答案 1 :(得分:0)
这可能有效。
awk 'p="0" $0~/aes/ {p=1} $0~/old/ {p=""} {print $0(p~/0|1/?",":"")p}' file
www,/something else/,ese,0
www,/something else/,aes,1
arc,/something else/,ese,0
old,/something else/,ese
答案 2 :(得分:0)
sed '\#^www,/something else/,ese$# {s//&,1/;b;}
\#^old,/something else/,ese$# b
s/$/,0/' YourFile
其他内容可以替换为任何模式,例如.*
但#
(或使用其他分隔符)
答案 3 :(得分:0)
您可以使用以下sed
脚本:
example.sed:
# Append the 1 to www ... aes and got to next line in input
/www,\/something else\/,aes/ {s/.*/\0,1/;b next}
# Do nothing here and go to next line in input
/old,\/something else\/,ese/b next
# Append the 0 for all other lines
s/.*/\0,0/
# Label for above jump statements (b next)
:next
执行它:
sed -f example.sed input.txt
答案 4 :(得分:0)
这可能适合你(GNU sed):
sed -r 's/$/,0/;s/^(www,/something else/,aes)..$/\1,1/;s/^(old,/something else/,ese)..$/\1/' file
正如你所描述的那样。