使用sed打印特定行

时间:2011-04-12 18:41:00

标签: unix sed

我试图只打印不以文件“main”

中的字母开头的行

我试过sed -n '/^[a-z]/ /!w' main 它给了我“w':事件没找到”

3 个答案:

答案 0 :(得分:2)

根据要求sed

sed '/^[[:alpha:]]/d' main

sed -n '/^[^[:alpha:]]/p' main

sed -n '/^[[:alpha:]]/!p' main

注意:您可以使用[a-z]代替[[:alpha:]],但我更喜欢后者,因为它可以安全地在不同的语言环境中使用

答案 1 :(得分:0)

grep -v '^[a-z]' main

会这样做。

答案 2 :(得分:0)

还有许多其他打印线的方法

sed -n '/^[^a-zA-Z]/p' main
sed -n '/^[^a-z]/Ip' main 

awk 'BEGIN{IGNORECASE=1}!/^[a-z]/' main

grep -vi "^[a-z]" main

ruby -ne 'print unless /^[a-z]/i' main

while read -r line
do
  case "$line" in
    [^a-zA-Z]*) echo $line;;
  esac
done < main