我是文件中的列表数字,我会在字符串中搜索 1 个特定数字
Es. 1 54 67 78 32
11 4 67 89 90
13 67 87 32 21
我的搜索是 1
使用 awk 或 grep 命令输出这个数字
1
11
13
21
grep -w 1
awk '/12/'
但不是单身1
这是正确的操作吗?并在 1 行中搜索特定的 2 个数字?
答案1
那么您想要包含指定数字的任何数字吗?将数字模式添加到1
,例如:
grep -ow '[0-9]*1[0-9]*' infile
输出:
1
11
13
21
编辑
正如 Stéphane 所指出的,这仅适用于正整数。如果您想要一个更通用的解决方案,类似于建议的内容这里会更好。下面是带有推荐正则表达式的 perlre grep 版本:
grep -oP '[+-]?(0|[1-9]\d*)(\.\d*)?([eE][+-]?\d+)?' infile
查找1
其中包含 a 的所有数字现在只需将输出传递给grep 1
.
答案2
我已经通过以下2种方法完成了
h=`awk '{print NF}' filename| sort | uniq| sort -nr | sed -n '1p'`
praveen@praveen:~$ for ((i=1;i<=$h;i++))
do
awk -v i="$i" '$i ~ /1/{print $i}' filename
done
出去
1
11
13
21
第二种方法
sed -r "s/\s+/\n/g" 文件名 | awk '/1/{打印 $0}'
1
11
13
21