想办法把文档中只有一个数字的行打印出来

回复 收藏
如题: grep  sed  awk 亦或是shell,只要能达到我们的需求就ok。

{{{密码回复可见}}}
本例,把/etc/passwd作为演示文档,你可以自定义一个文档。
2015-09-08 12:52 举报
已邀请:
0

huguihua2002

赞同来自:

看看
0

邱石

赞同来自:

学习一下。想了很久没想出好的方法
0

小杰

赞同来自:

{:4_91:}
0

第六感

赞同来自:

{:4_109:}
0

第六感

赞同来自:

#!/bin/bash
while read line;do
if [[ $(echo -n "$line"|sed 's/[^[:digit:]]//g'|wc -c) -eq 1 ]];then
      echo $line
fi
done
0

wangdi244

赞同来自:

看看答案
0

wangdi244

赞同来自:

python版本代码
  1. #!/usr/bin/env python
  2. # coding=utf-8

  3. path = '/etc/passwd'
  4. num_list = range(0,10)
  5. new_num_list = []
  6. for i in num_list:
  7.     new_num_list.append(str(i))
  8. str_num = ','.join(new_num_list)
  9. with open(path) as f:
  10.     for line in f:
  11.         if line.split(':')[3] in str_num:
  12.             if line.split(':')[2] in str_num:
  13.                 print line,
0

哈哈琨少

赞同来自:

学习学习
0

渐行渐远

赞同来自:

学习
0

wzwyql

赞同来自:

学习。。
0

zhangsan

赞同来自:

grep -v '[^0-9]' 1.txt | grep -v '^$'
0

s_jxiaobo

赞同来自:

研究研究
0

lky

赞同来自:

来学习
0

放牛

赞同来自:

学习
0

foxbuns

赞同来自:

没想出来,看看答案
0

木树

赞同来自:

看看
0

wuhen

赞同来自:

看看答案
0

andreking

赞同来自:

学习下
0

老杆儿

赞同来自:

这个行吗? grep -e  "^[0-9]$" 1.txt
0

krven

赞同来自:

{:4_91:}
0

yangguang_tu

赞同来自:

touch  1.txt    /etc/passwd
0

大喵喵66

赞同来自:

答案。。
0

hhaa0352

赞同来自:

学习
0

LPing

赞同来自:

学习
0

Shawn

赞同来自:

先看看呗,想不出来了
0

Shawn

赞同来自:

没有grep 或者sed 显示哎。。。。
0

zql254

赞同来自:

本帖最后由 zql254 于 2015-9-23 19:35 编辑

egrep "^[^0-9]*[0-9][^0-9]*$" aa.txt
0

zhangzihao

赞同来自:

lll
0

Anonymous

赞同来自:

学习学习!
0

飞奔的土豆

赞同来自:

还是要做题呀  刚学就给忘啦 。。
0

w402700845

赞同来自:

不会!可以过滤出数字 但是想不到怎么只单独一个数字
0

乌贼的帽子

赞同来自:

{:4_91:}
0

北辰星

赞同来自:

思考
0

robert

赞同来自:

lala
0

zch

赞同来自:

感觉很简单,操作一下还是有很多不同,看看专业答案 0.0
0

老杆儿

赞同来自:

grep -n '[0-9]' ab.txt | grep -n -v '[0-9]\{2,\}'
0

黄仁伟

赞同来自:

学习
0

dongdongchen

赞同来自:

看看
0

黄仁伟

赞同来自:

里面有错误,应该改成下面的
0

黄仁伟

赞同来自:

#!/bin/bash
f=/etc/passwd
line=`cat $f |wc -l`
for l in `seq 1 $line`
do
    n=`sed -n "$l"p $f | grep -o '[0-9]\+' | wc -l`
    if [ $n -eq 1 ]
    then
        sed -n "$l"p $f
    fi
done
0

彭勇士

赞同来自:

我想看看
0

追风者

赞同来自:

1
0

wudi61

赞同来自:

学习
0

fansze

赞同来自:

{:4_95:}
0

沈诚

赞同来自:

本帖最后由 沈诚 于 2015-10-15 22:07 编辑

grep '^[0-9]$' 1.txt
0

phper

赞同来自:

学习
0

xieqilang

赞同来自:

秋秋
0

oneliang

赞同来自:

看看
0

hxksd

赞同来自:

看一下
0

demon_l

赞同来自:

see see
0

qiaoxin360

赞同来自:

sed -n '/^[0-9]$/'p 1.txt
0

剑在飞

赞同来自:

{:4_93:}{:4_93:}{:4_93:}
0

Rohero

赞同来自:

grep '[0-9]{1}'  /etc/passwd
0

linux6688

赞同来自:

987654321
0

lh3526648

赞同来自:

瞧瞧看看
0

猫腻

赞同来自:

学习
0

yaoyongxin

赞同来自:

看看答案
0

陈森林

赞同来自:

{:4_109:}
0

自己定义

赞同来自:

看看呗
0

xteplinux

赞同来自:

{:4_91:}
0

温柔的笑猫

赞同来自:

学习~
0

Edison

赞同来自:

看看
0

Linuxpp

赞同来自:

shell又陌生了
0

汤小东

赞同来自:

check
0

落、雨寒

赞同来自:

111
0

xebszw

赞同来自:

学习一下
0

wangxinpeng

赞同来自:

看看
0

yanggang

赞同来自:

学习
0

ldp840611

赞同来自:

看看
0

yangjian319

赞同来自:

学习学习。
0

maria

赞同来自:

# grep -e  "^[0-9]*$" 11.txt
0

zhangmengjun

赞同来自:

{:7_180:}学习一下
0

zyos

赞同来自:

学习 学习。
0

J!_yuan

赞同来自:

cat 1.txt |sed 's/[^0-9]//g'|grep -v ^$|sort -n|awk '$NF<10'|wc -l
0

xueyongbo

赞同来自:

瞅瞅
0

xueyongbo

赞同来自:

  1. [root@master shell]# sed -n '20p' passwd | grep -o '[0-9]'
  2. 2
  3. 9
  4. 2
  5. 9
  6. [root@master shell]# sed -n '20p' passwd | grep -o '[0-9]*'
  7. 29
  8. 29


铭哥,我感觉这个题目有点歧义,是只含有一个数字字符的行,还是含有一个数字的行?,,你的原意好似是含有一个数字字符的行
0

Burgess

赞同来自:

学习
0

baowanhua

赞同来自:

看看
0

baowanhua

赞同来自:

看看
0

王焱峰

赞同来自:

q
0

石头

赞同来自:

{:4_91:}[code][/code]
0

jinm

赞同来自:

学习
0

圣手书生

赞同来自:

学习
0

jimmyliang

赞同来自:

学习一下
0

rolay8

赞同来自:

本帖最后由 rolay8 于 2015-12-23 18:21 编辑
  1. #!/bin/bash

  2. cat /etc/passwd|while read line
  3. do
  4.     num=`echo $line|sed 's/[^0-9]//g'`
  5.     word=`echo -n $num|wc -c`
  6.     if [[ $word  -eq 1 ]];then
  7.         echo "$line"
  8.     fi
  9. done
0

qiqige

赞同来自:

学习
0

weifeng1463

赞同来自:

ok
0

huanglin

赞同来自:

前来学习
0

369666951

赞同来自:

1
0

369666951

赞同来自:

#!/bin/bash
file=/root/passwd
i=`cat $file |wc -l`
for m in `seq 1 $i`
do
  # echo $m
   a=`sed -n "$m"p $file|sed 's/[^0-9]//g'|wc -c`
   if [ $a -le 2 ]
   then
   sed -n "$m"p $file
   fi  
done


0

出VU时代

赞同来自:

先看看
0

Landon

赞同来自:

asd
0

zhangdailu

赞同来自:

学习
0

balich

赞同来自:

学习
0

hlymlv

赞同来自:

学习
0

thedawn

赞同来自:

1
0

ybyangbei

赞同来自:

哈哈
0

考鸡蛋

赞同来自:

想了半天没成功。。看看铭哥怎么写的!!
0

考鸡蛋

赞同来自:

  1. #!/bin/bash
  2. f=/root/test.txt
  3. line=`wc -l $f|awk '{print $1}'`
  4. for l in `seq 1 $line`; do
  5.      n=`sed -n "$l"p $f |sed 's/[^0-9]/ /g'|awk -F ' ' '{print NF}'`;
  6.      if [ $n -eq 1 ]; then
  7.         sed -n "$l"p $f
  8.      fi
  9. done


这样写不知道对不对!!!
0

loveyouhyf

赞同来自:

#!/bin/bash
#把文档中只有一个数字的行打印出来
##write by 2016-01-06
while read line;do
if [ $(echo -n "$line"|sed 's/[^0-9]//g'|wc -c) -eq 1 ];then
      echo $line
fi
done

回复帖子,请先登录注册

退出全屏模式 全屏模式 回复
评分
  • 评分区间
  • 学分
  • -30 ~ 30
可选评分理由: