我试过看了很多问题,但我仍然无法为此创建一些awk命令。基本上我有一个带空格缩进的文件(不是制表符),我只想更改值“[scrub]”的字段价格,数量和符号的值。如何使用单行命令维护文件的格式和其他值?
自:
Values:
Client Order ID : new000000000001
Client Quote ID : N/A
Exchange Quote ID : N/A
Symbol : EUR/USD
Spot attributes
Price : $150.00000000 : 15000000000
Discretion : $0.00000000 : 0
Quantity : 100
要:
Values:
Client Order ID : new000000000001
Client Quote ID : N/A
Exchange Quote ID : N/A
Symbol : [scrub]
Spot attributes
Price : [scrub]
Discretion : $0.00000000 : 0
Quantity : [scrub]
提前致谢!
答案 0 :(得分:1)
仅为price
使用perl,例如:
$ perl -pe 's/^(\s+Price\s+:\s+).*/$1\[scrub\]/g' prices
Values:
Client Order ID : new000000000001
Client Quote ID : N/A
Exchange Quote ID : N/A
Symbol : EUR/USD
Spot attributes
Price : [scrub]
Discretion : $0.00000000 : 0
Quantity
其余的:
$ perl -pe '
s/^(\s+Price\s+:\s+).*/$1\[scrub\]/g;
s/^(\s+Symbol\s+:\s+).*/$1\[scrub\]/g;
s/^(\s+Quantity\s+:\s+).*/$1\[scrub\]/g;
' file
答案 1 :(得分:0)
最后我创建了一个脚本,因为命令太大了。我只是为了获取信息而放在这里:
#!/usr/bin/env perl
use strict;
use warnings;
open INPUTFILE, "<", $ARGV[0] or die $!;
open OUTPUTFILE, ">", $ARGV[1] or die $!;
while (<INPUTFILE>) {
s/^(\s+Price\s+:\s+).*/$1\[scrub\]/g;
s/^(\s+Symbol\s+:\s+).*/$1\[scrub\]/g;
s/^(\s+Quantity\s+:\s+).*/$1\[scrub\]/g;
s/^(\s+FIX content drop copy only\s+:\s+).*/$1\[scrub\]/g;
print OUTPUTFILE;
}
close OUTPUTFILE;
close INPUTFILE;