我有一个文件,其中包含以下内容,描述了范围。
library(data.table)
setDT(d)
d[, rt := as.numeric(as.character(rt))]
i <- dt[, which(condition == 'ITI' & !is.na(rt))]
d[i - 1, c('response', 'rt') := d[i, .(response, rt + 2)]]
d[i, c('response', 'rt') := .('None', NA)]
d
# condition response rt
# 1: ITI None NA
# 2: pos 6 1.5
# 3: ITI None NA
# 4: ITI None NA
# 5: neg 7 2.2
# 6: ITI None NA
# 7: ITI None NA
# 8: ITI None NA
# 9: pos 7 1.2
# 10: ITI None NA
# 11: neg 6 2.4
# 12: ITI None NA
# 13: ITI None NA
# 14: pos 6 1.4
# 15: ITI None NA
我需要验证:
答案 0 :(得分:2)
您可以使用此awk
:
awk -F, '$1>$2 || (NR>1 && p>$1){exit 1} {p=$2}' file && echo "true" || echo "false"
在这里,我们将前一行的第二列存储在变量p
中。
答案 1 :(得分:0)
当我们假设每行有两个带逗号的字段时,您希望看到所有数字等于或大于最后一个。
在这种特殊情况下,您可以使用
[[ $(tr "," "\n" < file) == $(tr "," "\n" < file |sort -n) ]] && echo "true" || echo "false"
使用sort -c
选项更容易:
tr "," "\n" < file | sort -nc 2>/dev/null && echo "true" || echo "false"
答案 2 :(得分:0)
类似于Walter的解决方案-
$: tr , "\n" < file | sort -n --check && echo valid
valid
tr
将所有逗号都转换为换行符,从而将文件呈现为一列,您的OP则应将其按数字排序。
sort -n --check
如果按数字排序,则返回有效的零返回码,如果不是,则返回1。
echo
仅在报告-&&
检查sort
的退货,并告诉您文件是否良好。