我正在过滤带有数字和名称的文本文件,我只想打印包含三个连续连续数字的行。输入列表:
123 321 567 765 124 5689 12345.
输出应包含:
123 321 567 765 12345
我已经尝试过此命令
awk ' {split ("", N) # delete array N
L = 1 # initialize boolean L to TRUE
for (i=1; i<=length($1); i++){ # for each digit
P = substr($1, i, 1)
if (N[P-1] || N[P+1]){ # if contiguous digit exists,
L = 0 break # set L to FALSE; and quit the for loop
} N[P] = 1 } } L ' file
但是它没有按预期工作。
我喜欢使用任何sed
或grep或awk
命令。
答案 0 :(得分:0)
您是在寻求家庭作业方面的帮助还是试图解决问题?如果是后者,那么在组合很少的情况下使用算法方法就像使用链锯切割黄油一样。考虑以下脚本:
mystring="012 123 234 567 678 789"
revstring=$(echo $mystring|rev)
checkstring="$mystring $revstring"
for checkno in $(echo $checkstring);
do
grep $checkno numbers
done
请注意,这将为包含多个序列的行提供重复输出,但只需通过| sort -u来消除它们即可。
答案 1 :(得分:0)
这是3个连续(升序或降序)数字的基本正则表达式。
<input id="txtMSRP" type="text" value="<your_value>" />
https://regex101.com/r/hd5PzR/1
您可以用(?:012|123|234|345|456|567|678|789)|(?:987|876|765|654|543|432|321|210)
装饰它
如果需要的话。