我们解析以下格式的数据-
35953539535393 BG |..|...|REF_DATA^1^Y^|...|...|
35953539535393 B |..|...|REF_DATA_IND^1^B^|...|...|
我们需要使用脚本打印出现在文件中的REF_DATA *的唯一值。 因此,以上数据的输出为:
REF_DATA^1^Y^
REF_DATA_IND^1^B^
我们如何使用grep,sed或awk-使用单行脚本来实现这一目标。
答案 0 :(得分:0)
能否请您尝试以下操作,如果有帮助,请告诉我。
awk 'match($0,/REF_DATA[^|]*/){val=substr($0,RSTART,RLENGTH);if(!array[val]++){print val}}' Input_file
现在也添加一种非衬套形式的解决方案。
awk '
match($0,/REF_DATA[^|]*/){
val=substr($0,RSTART,RLENGTH);
if(!array[val]++){
print val
}
}' Input_file
答案 1 :(得分:0)
假设您具有GNU grep:
command_to_produce_data | grep -oP '(?<=[|])REF_DATA.+?(?=[|])' | sort -u
答案 2 :(得分:0)
这可能对您有用(GNU sed和sort):
sed '/\n/!s/[^|]*REF_DATA[^|]*/\n&\n/;/^[^|]*REF_DATA/P;D' file | sort -u
用换行符括住预期的字符串,仅在单独的行上打印这些字符串,并对仅显示唯一值的行进行排序。
答案 3 :(得分:0)
awk -F\| '{print $4}' file
REF_DATA^1^Y^
REF_DATA_IND^1^B^