我在文件中有以下几行:
1231231213123123123|W3A|{ (ABCDE)="8=3AF.R.Y2=133AA=9WW=334MNFN=20120925-22:23:59.998
1231231213123123123|4GM|{ (ABCDE)="8=3AF.R.Y2=123AA=9WW=4AF013DCV=EXAMPLE=ABC
1231231213123123123|KYC|{ (ABCDE)="8=3AF.R.Y2=112AA=9WW=0002DDS=20120921-14:55:21
为了获得“|”之间的值我正在使用的字符:
sed -e 's/\(^.*|\)\(.*\)\(|.*$\)/\2/'
输出是:
W3A
4GM
KYC
预期。但由于文件有数千条记录,sed命令需要花费大量时间。有没有办法改善这个命令的性能?
答案 0 :(得分:4)
对我来说就像你只想用cut:
cut -d '|' -f 2 file
将分隔符设置为|
并打印第二个字段。
答案 1 :(得分:0)
由于你只保留了第二个括号内的组,你通过记住其他东西让你做了不必要的工作。尝试
sed -e 's/^[^|]*|\([^|]*\)|.*/\1/'
但是汤姆·费内奇的答案应该快得多。