如何删除分隔符后仅包含数字,特殊字符或空格的行

时间:2016-06-27 14:06:39

标签: bash macos

以下代码:

#!/bin/bash

osascript -e \
'tell application "Google_Chrome" to tell tab 1 of window 1 \
set t to execute javascript "document.body.innerText" \
end tell' | grep ':'

输出结果:

line1:blah blah 
line2:blah 123 
line3: 
line4:[456] blah
Line5:blah blah
line6:[789]
line 7: 

所需的输出:

line1:blah blah 
line2:blah 123 
line4:[456] blah

我可以使用cut -d : -f1来获得左侧,cut -d : -f2来获得恰到好处的一面。但我似乎无法弄清楚如何在保留数据结构的同时删除仅包含数字和/或特殊字符的空白行或行。

据我所知,我正在努力实现的是遵循这套特定的规则:

  • 每个有效的输出行都包含:但不是所有包含:的行都有效

  • :

    左侧不允许使用空格,特殊字符或大写字母
  • 只有小写字母数字下划线 [a-z] [0-9]_允许在:

  • 的左侧
  • 任何包含<{1}}右侧字母[a-z]的行都应该被丢弃。 (案件并不重要)

任何想法如何实现这一目标?

1 个答案:

答案 0 :(得分:3)

将此grep替换为:

... | grep -E '^[a-z0-9_]+:[^a-zA-Z]*[a-zA-Z]'

line1:blah blah
line2:blah 123
line4:[456] blah

这符合您的要求,[a-z0-9_]左侧只有:个字符,[a-zA-Z]的RHS只允许:中的至少一个。