ファイルを読み、次を含むすべての行を印刷したいと思います。
## 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