HTMLファイルがあります。で始まらないすべての行を削除したい<tr>。
私は試した:
cat my_file | sed $'
s/^[^tr].*//
' | sed '/^$/d'
しかし、それはすべての行を削除しました。
s/^[^tr]...tまたは以外の文字で始まる行に一致しますr。大括弧は、正規表現の文字範囲です。
HTMLファイルがあります。で始まらないすべての行を削除したい<tr>。
私は試した:
cat my_file | sed $'
s/^[^tr].*//
' | sed '/^$/d'
しかし、それはすべての行を削除しました。
s/^[^tr]...tまたは以外の文字で始まる行に一致しますr。大括弧は、正規表現の文字範囲です。
回答:
sed -e '/^<tr>/d'
その間の部分/は正規表現です。このdコマンドは、一致する行を削除します。
更新:おっと、ごめんなさい。そう
sed -e '/^<tr>/!d'
!一致の感覚を無効にする場所。
必要がある場合sed:
sed -ni '/^<tr>/p' file
-iファイルをインプレースで編集し、すべての行を印刷し-nないようにsedします。正規表現は、(^)で始まるすべての行に一致することを意味し<tr>、それらの行が印刷されます(p)。
とgrep:
grep -E '^<tr>' file
-Egrepの解釈正規表現を拡張しました。
とawk:
awk '/^<tr>/' file
または純粋bash:
while IFS= read -r l; do [[ "$l" =~ ^\<tr\> ]] && echo $l; done <file
[[bashs内部の条件式です。$l正規表現と比較し、成功した場合は(&&)で行を出力しechoます。
"$l"。そしてecho、それをのコマンドラインの最初の引数として配置するので、で始まる場合は問題が発生します-option。(使用しprintf '%s\n' "$l"). Also, shell 、それは超遅いですのでread`は、アット・タイム1バイトを読み込みしなければならない処理のテキストファイルは、純粋なbashで、あなたのファイルが非常に小さいことを知っている場合を除き、通常は良い選択ではありません。。
grep。