将行数放入带有shell脚本的列中

时间:2012-11-16 15:50:41

标签: shell awk

我有一个包含许多行的文件,例如

1 jfkdajfd   1 2 3 5
2 fkldfjld   
3 fdkfloaf   9 10
4 fldfldkf 
5 fdskf;ak   12 1 4

我想获取所有数字并将它们放在文件的列中,例如

 1
 2
 3
 5
 9
 10
 12
 1
 4

我怎样才能做到这一点? 感谢

3 个答案:

答案 0 :(得分:2)

在您的情况下,看起来您可以这样做:

awk '{for (i=3;i<=NF;++i) {print $i}}'

假设您要打印的所有数字都出现在第3栏或之后。

答案 1 :(得分:0)

cat file | while read line
do
  for i in $(echo ${line})
  do
    isnumeric=$(echo ${i} | grep -q [0-9]; echo ${?})
    if [ ${isnumeric} -eq 0 ]
    then
      echo ${i} >> outfile
    fi
  done
done

不是防弹的,不像以前给出的解决方案那样优雅,但它显示了用于确定这是否是数字的内容。

答案 2 :(得分:0)

while read num alpha rest; do 
    [[ "$rest" ]] && printf "%s\n" $rest   # <-- variable is unquoted
done < filename