0

私は次の入力を持っています:

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

ここで、タイトルを含む行のみを読み取る必要があるため、------および/>を削除する必要があります。私はなんとかすべての-----を除外することができました:

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

しかし、問題は2行を削除することです。

/ >blablabla
/ >

(blablablaが変更される可能性がある場合)。"/>"で始まるすべての文字列を除外したいのですが、いくつかの方法で試しましたが、成功しませんでした。

と:

if [[ $LINE!=/* ]]

私は成功しませんでした。その結果を得る正しい方法は何ですか?

前もって感謝します。

4

3 に答える 3

4

タイトルのみを繰り返すには、次のことを試してください。

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

これにより、気にしない2種類の行が除外されます。

于 2012-05-20T22:08:51.057 に答える
1
while read line; do
  case $line in
    '/ >'*|---*)
      continue;;
  esac
  echo "$line"
done << \EOF
/ >blablabla
title 1 
-------
title 2
-------
...
-------
title n
/ > 
EOF
于 2012-05-20T22:10:49.170 に答える
1
pattern='^/ > |^-------'
while read -r line
do
    if [[ ! $line =~ $pattern ]]
    then
        printf '%s\n' "$line"
    fi
done < inputfile
于 2012-05-21T01:32:06.080 に答える