すべての行が次から始まる巨大なテキストファイルがあります。
#=GS N4TFW2_FUSC1/96-161 AC N4TFW21
N4TFW2_FUSC1
私はこの部分だけに興味があります。残りのテキストからこの部分を抽出して、フルテキストファイルに適用する必要があります。
動作する次のスクリプトが見つかりましたが、方法がわかりません。
cat helo.lst | sed 's/^#=GS\s\([A-Z0-9_]*\)\/.*/\1/1' > helo_id.lst
その後、何が起こったのかを説明できる人はいますか?s/
たとえば、私が知っている限り、ファイルにwithが表示さsed 's/Mark/Euro/g' de_currency.txt
れるすべてのエントリを変更します。Mark
しかし、私の例では、スクリプトはそれよりも複雑に見えます。Euro
de_currency.txt
答え1
sed構文によると:
/オリジナル/交換/1回
原稿を分解する
^行の始まり
#=検索するGS文字列
\sスペース
( ) \ はシェルで使用されているように ( で意味を持ちます。
[A-Z0-9_] []は、A〜Z、0〜9、_などの文字を表します。
*は0回以上を意味します。
\/\ はシェルから意味を得るため、「/」で終わる文字列を表します。
.*行が終わるまで、他のすべてを消費/一致します。
分解の代替
\ 1元の文字列の最初の文字列正規表現の一致(変数)(逆参照[グループ])
警告:これはGNU sed構文です。 OS/X または *BSD では gsed を使用する必要があります。
高度な例を含むsed記事リンク:
http://www.thegeekstuff.com/2009/10/unix-sed-tutorial-advanced-sed-substitution-examples/