Bor*_*a88 0 grep sed awk text-processing regular-expression
需要在此处删除;以下每一行(分号)左侧的任何数据的命令:
07:48;1563101282.M178569P409830.de122.abteilung.com,S=1258,W=1287:2,
08:00;1563102004.M49870P436474.de122.abteilung.com,S=1258,W=1287:2,
08:16;1563102961.M195946P457876.de122.abteilung.com,S=1258,W=1287:2,
08:32;1563103921.M334168P463856.de122.abteilung.com,S=1258,W=1287:2,
08:48;1563104883.M883187P502037.de122.abteilung.com,S=1258,W=1287:2,
09:00;1563105603.M799240P519637.de122.abteilung.com,S=1258,W=1287:2,
09:16;1563106561.M419884P547969.de122.abteilung.com,S=1258,W=1287:2,
09:32;1563107524.M145768P582635.de122.abteilung.com,S=1258,W=1287:2,
09:48;1563108483.M632493P607265.de122.abteilung.com,S=1258,W=1287:2,
10:00;1563109203.M675460P633790.de122.abteilung.com,S=1258,W=1287:2,
10:16;1563110163.M299406P663234.de122.abteilung.com,S=1258,W=1287:2,
10:32;1563111121.M682713P685072.de122.abteilung.com,S=1258,W=1287:2,
Run Code Online (Sandbox Code Playgroud)
以某种方式,它会导致如下行:
1563101282.M178569P409830.de122.abteilung.com,S=1258,W=1287:2,
1563102004.M49870P436474.de122.abteilung.com,S=1258,W=1287:2,
1563102961.M195946P457876.de122.abteilung.com,S=1258,W=1287:2,
1563103921.M334168P463856.de122.abteilung.com,S=1258,W=1287:2,
1563104883.M883187P502037.de122.abteilung.com,S=1258,W=1287:2,
1563105603.M799240P519637.de122.abteilung.com,S=1258,W=1287:2,
1563106561.M419884P547969.de122.abteilung.com,S=1258,W=1287:2,
1563107524.M145768P582635.de122.abteilung.com,S=1258,W=1287:2,
1563108483.M632493P607265.de122.abteilung.com,S=1258,W=1287:2,
1563109203.M675460P633790.de122.abteilung.com,S=1258,W=1287:2,
1563110163.M299406P663234.de122.abteilung.com,S=1258,W=1287:2,
1563111121.M682713P685072.de122.abteilung.com,S=1258,W=1287:2,
Run Code Online (Sandbox Code Playgroud)
请问在 GNU 中awk,egrep还是sed?
Fre*_*ddy 15
另一种sed变体:
sed 's/^[^;]*;//' file
Run Code Online (Sandbox Code Playgroud)
用空字符串替换[^;]*行首(第一个^)后跟分号的任何非分号字符 ( ) 。
在awk:
awk 'BEGIN { FS = ";" } ; { print $2 }'
Run Code Online (Sandbox Code Playgroud)
或者,甚至更简单
awk -F";" '{print $2}'
Run Code Online (Sandbox Code Playgroud)
(谢谢你,ilkkachu,这个简化版)
使用 GNU sed:
sed -E 's/^.*;(.*)/\1/' file
Run Code Online (Sandbox Code Playgroud)
使用 GNU grep:
grep -Po '(?!.*;).*' file
Run Code Online (Sandbox Code Playgroud)
小智 6
< inputfile egrep ';' | cut -f 2 -d ';'
Run Code Online (Sandbox Code Playgroud)
-这个命令,你会得到这个!
正如现有答案已经表明的那样,有很多方法可以做到这一点。这是另一种 GNUgrep方法:
$ grep -oP ';\K.*' file
1563101282.M178569P409830.de122.abteilung.com,S=1258,W=1287:2,
1563102004.M49870P436474.de122.abteilung.com,S=1258,W=1287:2,
1563102961.M195946P457876.de122.abteilung.com,S=1258,W=1287:2,
1563103921.M334168P463856.de122.abteilung.com,S=1258,W=1287:2,
1563104883.M883187P502037.de122.abteilung.com,S=1258,W=1287:2,
1563105603.M799240P519637.de122.abteilung.com,S=1258,W=1287:2,
1563106561.M419884P547969.de122.abteilung.com,S=1258,W=1287:2,
1563107524.M145768P582635.de122.abteilung.com,S=1258,W=1287:2,
1563108483.M632493P607265.de122.abteilung.com,S=1258,W=1287:2,
1563109203.M675460P633790.de122.abteilung.com,S=1258,W=1287:2,
1563110163.M299406P663234.de122.abteilung.com,S=1258,W=1287:2,
1563111121.M682713P685072.de122.abteilung.com,S=1258,W=1287:2,
Run Code Online (Sandbox Code Playgroud)
该-o品牌GREP仅打印该行的匹配部分和-P使Perl兼容的正则表达式。PCRE 的\K意思是“忽略之前匹配的任何内容”。将所有这些放在一起,该命令将找到第一个;,丢弃它,然后打印该行的其余部分。
另一种选择是在其 awk-mode ( -a) 中使用 perl :
$ perl -F';' -lane 'print $F[1]' file
1563101282.M178569P409830.de122.abteilung.com,S=1258,W=1287:2,
1563102004.M49870P436474.de122.abteilung.com,S=1258,W=1287:2,
1563102961.M195946P457876.de122.abteilung.com,S=1258,W=1287:2,
1563103921.M334168P463856.de122.abteilung.com,S=1258,W=1287:2,
1563104883.M883187P502037.de122.abteilung.com,S=1258,W=1287:2,
1563105603.M799240P519637.de122.abteilung.com,S=1258,W=1287:2,
1563106561.M419884P547969.de122.abteilung.com,S=1258,W=1287:2,
1563107524.M145768P582635.de122.abteilung.com,S=1258,W=1287:2,
1563108483.M632493P607265.de122.abteilung.com,S=1258,W=1287:2,
1563109203.M675460P633790.de122.abteilung.com,S=1258,W=1287:2,
1563110163.M299406P663234.de122.abteilung.com,S=1258,W=1287:2,
1563111121.M682713P685072.de122.abteilung.com,S=1258,W=1287:2,
Run Code Online (Sandbox Code Playgroud)
或者像 sed 一样使用 perl 并删除第一个之前的所有内容;:
$ perl -pe 's/.*?;//' file
1563101282.M178569P409830.de122.abteilung.com,S=1258,W=1287:2,
1563102004.M49870P436474.de122.abteilung.com,S=1258,W=1287:2,
1563102961.M195946P457876.de122.abteilung.com,S=1258,W=1287:2,
1563103921.M334168P463856.de122.abteilung.com,S=1258,W=1287:2,
1563104883.M883187P502037.de122.abteilung.com,S=1258,W=1287:2,
1563105603.M799240P519637.de122.abteilung.com,S=1258,W=1287:2,
1563106561.M419884P547969.de122.abteilung.com,S=1258,W=1287:2,
1563107524.M145768P582635.de122.abteilung.com,S=1258,W=1287:2,
1563108483.M632493P607265.de122.abteilung.com,S=1258,W=1287:2,
1563109203.M675460P633790.de122.abteilung.com,S=1258,W=1287:2,
1563110163.M299406P663234.de122.abteilung.com,S=1258,W=1287:2,
1563111121.M682713P685072.de122.abteilung.com,S=1258,W=1287:2,
Run Code Online (Sandbox Code Playgroud)