0

下面是我的输入文件:

sample.txt

3"
6-position
7' 4" to 10' 3-1/2"
4.8"
Adjustable from 99" to 111" - max 148

在输出中我只需要 3 个,即

output.txt

3
4.8

所以基本上我需要打印"符号的数值,其他非数字文本需要完全删除。

我试图用 来实现这个sed,但我无法得到想要的结果。

有没有办法在 UNIX 上实现这一点?

4

4 回答 4

1

awk 更适合执行此类任务:

awk '/^ *[0-9]*(\.[0-9]+)?" *$/{sub(/"/, ""); print}' inFile

输出:

3
4.8
于 2013-05-11T21:11:37.397 回答
1
于 2013-05-11T20:28:42.553 回答
0

这可能对您有用(GNU sed):

sed '/^[0-9.]\+"/!d;s/".*//' file
于 2013-05-11T23:20:06.090 回答
0

I think you are asking for grep -o [0-9][0-9]*\" sample.txt Which will match one or more numbers followed my a '"', and print each occurrence separately and without surrounding text.

于 2013-05-11T20:29:03.340 回答