Linux 跨行比较文件值
我有一个包含以下内容的文件,描述了范围Linux 跨行比较文件值,linux,bash,shell,Linux,Bash,Shell,我有一个包含以下内容的文件,描述了范围 27,16634 16634,228884 228884,263485 263485,570159 570159,574578 574578,582558 582558,589176 589176,610406 610406,758369 758369,761788 761788,1204053 1204053,2709997 2709997,2881177 2881177,2885709 2885709,2892004 2892004,2899595 2
27,16634
16634,228884
228884,263485
263485,570159
570159,574578
574578,582558
582558,589176
589176,610406
610406,758369
758369,761788
761788,1204053
1204053,2709997
2709997,2881177
2881177,2885709
2885709,2892004
2892004,2899595
2899595,2907546
2907546,2918485
2918485,2998518
2998518,3052950
3052950,3058420
3058420,3064901
3064901,3069132
3069132,3073363
3073363,3077670
3077670,3082448
3082448,3090852
3090852,3227270
3227270,5847341
5847341,7748374
我需要确认:
awk
:
awk -F, '$1>$2 || (NR>1 && p>$1){exit 1} {p=$2}' file && echo "true" || echo "false"
在这里,我们将前一行的第二列存储在变量
p
中,您可以使用此awk
:
awk -F, '$1>$2 || (NR>1 && p>$1){exit 1} {p=$2}' file && echo "true" || echo "false"
这里,我们将前一行的第二列存储在变量
p
中。当我们假设每行有两个带逗号的字段时,您希望看到所有数字都等于或大于最后一个。在这种特殊情况下,您可以使用
[[ $(tr "," "\n" < file) == $(tr "," "\n" < file |sort -n) ]] && echo "true" || echo "false"
当我们假设每行有两个带逗号的字段时,您希望看到所有数字都等于或大于最后一个。
在这种特殊情况下,您可以使用
[[ $(tr "," "\n" < file) == $(tr "," "\n" < file |sort -n) ]] && echo "true" || echo "false"
类似于沃尔特的解决方案-
$: tr , "\n" < file | sort -n --check && echo valid
valid
$:tr,“\n”
tr
将所有逗号转换为换行符,将文件呈现为一列,OP表示该列应按数字顺序排序
sort-n——检查
如果按数字顺序排序,则返回有效的零返回码;如果不按数字顺序排序,则返回1
echo
只是报告-和&
检查排序
的返回并告诉您文件是否正确 类似于沃尔特的解决方案-
$: tr , "\n" < file | sort -n --check && echo valid
valid
$:tr,“\n”
tr
将所有逗号转换为换行符,将文件呈现为一列,OP表示该列应按数字顺序排序
sort-n——检查
如果按数字顺序排序,则返回有效的零返回码;如果不按数字顺序排序,则返回1
echo
只是报告-和&
检查排序
的返回并告诉您文件是否正确 预期输出是什么?仅为真/假?@rs79我们有帮助吗?预期输出是什么?仅为真/假?@rs79我们有帮助吗?请注意,这不能正确处理文件中第一个条目为负的情况。请注意,这不能正确处理文件中第一个条目为负的情况。