特定の行の一部を印刷する

特定の行の一部を印刷する

ファイルを読み、次を含むすべての行を印刷したいと思います。

## DF <anything> 

それとも次に終わりますか?

<something> # DF <anything>

DF次に、次から印刷を開始します。

ここにいくつかの例があります。

  local lbpos=21    # DF [LBPOS]  Label Position
  local ktg="PILE"  # DF [KTG]    Category
  ## DF [KARG]   Control Argument
  Some text
  printf '%s\n' "$@"  \
      | while IFS="" read -r lnp; do  # DF [LNP]  Line Input
  More text 

結果

DF [LBPOS]  Label Position
DF [KTG]    Category
DF [KARG]   Control Argument
DF [LNP]  Line Input

ベストアンサー1

sedを使用してください:

$ sed -n -e 's/.*# DF */DF /p' /tmp/df.txt 
DF [LBPOS]  Label Position
DF [KTG]    Category
DF [KARG]   Control Argument
DF [LNP]  Line Input

入力ファイルのスペースがスペースの代わりに(またはその両方)タブである可能性がある場合は、[[:blank:]]スペースの代わりに使用してください。 [[:blank:]]水平スペースと一致します。たとえば、デフォルトの正規表現BREの代わりに拡張正規表現EREsedオプションを使用して数量子を使用できます。-E+

sed -n -E 's/.*#[[:blank:]]+DF[[:blank:]]+/DF /p' /tmp/df.txt 

おすすめ記事