あなたが尋ねたことのほとんどをカバーしていますが、jebの答えに追加します。
これら 3 つのコマンドは、Linux から移植されたエミュレートされたコマンドであり、次のことを行います。
sed
: テキストをフィルタリングおよび変換するためのストリーム エディター。
grep
: パターンに一致する線を印刷するためのツール。
cut
: ファイルの各行の選択した部分を切り取るためのツール。
man <command name>
Linux で入力するか、同じ文字列 (たとえば、「man grep 」) をグーグルで検索して、これら 3 つのコマンドの詳細を読むことをお勧めします。
また、正規表現を調べてください。初心者にとっては通常不明確ですが、パターンを表現するための一般的でコンパクトな方法です。
質問の特定の使用法について:
sed "s#""#'#g"
行ごとに、引用符 ( ""
) がアポストロフィ ( '
) に置き換えられます。
grep -o "class='name[^>]*"
これは、 で始まる行の一部のみを出力しclass='name
ますが、次の行はありません>
。
sed -n "/id=/p"
デフォルトでは、Sed はすべての行を出力します。一方、sed -n "<some pattern> /p"
指定されたパターンに一致する行のみを印刷します。この場合、Sed は を含む行のみを出力しid=
ます。
grep -o "surname=[^>]*"
これは、 で始まる行の一部のみを出力しますsurname=name'
が、次の行はありません>
。
cut -d"'" -f2
これにより、各行がアポストロフィ ( '
) で区切られた連続するフィールドとして解析され、2 番目のフィールドが選択されます。
すべてがパイプ処理されます。つまり、各コマンドの出力は、右側の次のコマンドの入力として機能します。「input.txt」の内容は Sed コマンドに渡され、その出力は grep コマンドに渡されます。最終的な出力は、明らかに「output.txt」という名前の新しいファイルに出力されます。
はい、jeb が述べたように、これは厄介なソリューションのように見えsed
ます。