Awk 从流中隔离相似的数据
我们分析以下格式的数据-Awk 从流中隔离相似的数据,awk,sed,grep,Awk,Sed,Grep,我们分析以下格式的数据- 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实现这一点-使用一行脚本。请尝试以下内容,并让我知道这是否对您有帮助
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实现这一点-使用一行脚本。请尝试以下内容,并让我知道这是否对您有帮助
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
假设您拥有GNU grep:
command_to_produce_data | grep -oP '(?<=[|])REF_DATA.+?(?=[|])' | sort -u
命令生成数据| grep-oP'(?这可能适合您(GNU-sed&sort):
用换行符包围所需字符串,仅在单独的行上打印这些字符串,并对仅显示唯一值的行进行排序。使用正则表达式依赖于REF\ucode>子字符串添加您尝试过的内容。.如果总是第4列,则始终可以将该列分离出来,然后应用sort+uniq或单独使用awk(如果要保留或删除)DerSundeep说了什么。你已经用awk、sed和grep标记了你的问题,所以我希望在你的问题中看到使用awk、sed和grep的例子或尝试。如果你自己没有做过任何工作,没有尝试找出解决方案,那么这不是适合你的问题的论坛。很好的解决方案,但我相信它不会涵盖其中的独特部分e、 您也可以通过管道将其排序或唯一。
awk -F\| '{print $4}' file
REF_DATA^1^Y^
REF_DATA_IND^1^B^
awk -F\| '{print $4}' file
REF_DATA^1^Y^
REF_DATA_IND^1^B^