仅打印与bash脚本的多个字符串不同的行

时间:2012-05-20 22:01:33

标签: bash

我有以下输入:

/ > blablabla
title 1 
-------
title 2
-------
...
-------
title n
/ > 

现在我只需要读取包含标题的行,所以我必须删除------和/>。 我设法将所有-----排除在外:

if [ "$LINE" != "-------" ] 

但问题是删除两行:

/ >blablabla
/ >

(blablabla可能会改变)。我想排除所有以:“/>”开头的字符串: 但我试过几次没有成功。

使用:

if [[ $LINE!=/* ]]

我没有成功。 获得该结果的正确方法是什么?

提前致谢。

3 个答案:

答案 0 :(得分:4)

要仅迭代标题,您可以尝试以下操作:

grep -vE '^(/ >|---)' your_file.txt |while read line; do 
  # process the titles
  echo $line
done

这将排除您不关心的两种类型的行。

答案 1 :(得分:1)

while read line; do
  case $line in
    '/ >'*|---*)
      continue;;
  esac
  echo "$line"
done << \EOF
/ >blablabla
title 1 
-------
title 2
-------
...
-------
title n
/ > 
EOF

答案 2 :(得分:1)

pattern='^/ > |^-------'
while read -r line
do
    if [[ ! $line =~ $pattern ]]
    then
        printf '%s\n' "$line"
    fi
done < inputfile