我是编码/ linux的新手
我想找到包含/file/4eb335ac-dc6b-4fd9-a6e1-1ca83d931b77
或XX Number 1.2.3.4
最初,我只是通过
进行硬编码XX Number 1.2.-.-
然后我意识到有一些文件有#34; XX Number"在他们的行中会搞砸。
以下是一个示例(请注意,多个空格是文字标签):
grep "XX Number" filename | cut -c 15-
这是我目前得到的:
XX Number 1.2.3.4
XX Number 1.2.-.-
Another line with XX Number that shouldn't match
这就是我想要的:
$ grep "XX Number" filename | cut -c 15-
1.2.3.4
1.2.-.-
ith XX Number that shouldn't match
如何grep for XX Number +标签然后只显示1.2.3.4或1.2。-.-?
由于
答案 0 :(得分:0)
awk
救援!
$ awk '/XX Number\t1\.2\.(3\.4|-\.-)/' file
XX Number 1.2.3.4
XX Number 1.2.-.-
获取最后一个字段的一部分
$ awk '/XX Number\t1\.2\.(3\.4|-\.-)/{sub("1.2.","",$NF); print $NF}' file
3.4
-.-
答案 1 :(得分:0)
使用包含标签的grep
:
grep $'XX Number\t' filename | cut -c15-
输出:
3.4
-.-
或者,如果你想要整个领域:
grep $'XX Number\t' filename | cut -f2
输出:
1.2.3.4
1.2.-.-
Tab是cut
的默认分隔符。
答案 2 :(得分:0)
您只想打印替换成功的行,因此默认情况下不打印(-n
)并在替换后打印(.../p
)。
sed -n 's/^XX Number\t....//p' filename
或当你做坚果想要在TAB之后删除4个字符时:
sed -n 's/^XX Number\t//p' filename