如何从剪切命令字段值中剪切单词和值?

如何从剪切命令字段值中剪切单词和值?

这是我的文件的行格式:

29.101.26.176 [11/Oct/2017:10:21:41 /pmk/clk?aff_id=5863&off_id=85635&trans_id=easoli4ddq8sssdf&prm2=23398_27530&device_id=864792012331091090 "Mozilla/5.0 Mobile

我需要剪切aff_id=5863off_id=85635trans_id=easoli4ddq8sssdf

我只能从cut命令中剪切特定字段,而不能剪切字段内的单词。我怎样才能分开给定的单词?

答案1

短的grep方法:

grep -Eo '([ao]ff|trans)_id=[^&]+' file

输出:

aff_id=5863
off_id=85635
trans_id=easoli4ddq8sssdf

----------

或者awk固定项目订单的解决方案:

awk -F'[?&]' '{ printf "%s %s %s\n",$2,$3,$4 }' file

输出:

aff_id=5863 off_id=85635 trans_id=easoli4ddq8sssdf

答案2

使用 GNUsed删除匹配的模式:

sed -E 's#([ao]ff|trans)_id=[^&]*&##g' infile

如果你想获取这些字符串值。

sed 's#.*\(aff_id=[^&]\).*\(off_id=[^&]\+\).*\(trans_id=[^&]\+\).*#\1 \2 \3#' infile
aff_id=5863 off_id=85635 trans_id=easoli4ddq8sssdf

相关内容