このコマンドを理解して分析してみてください。
echo -e '1234\n4567' | sed 's/^\(..\)\(..\)$/\1:\2/'
答え1
echo -e '1234\n4567'
echo
標準出力にパラメータを書き込みます。-e
バックスラッシュエスケープ解析を有効にします。'1234\n4567'
書き込む順序です。ここでは一重引用符を使用してください。\n
これはバックスラッシュエスケープ新しいラインを生成します。この-e
オプションがないと、リテラルecho
が生成されます\n
。man echo
|
|
管路標準出力左から、、、echo
まで標準入力右コマンドの場合sed
。
sed 's/^\(..\)\(..\)$/\1:\2/'
sed
s(ストリーム)エド(itor)'s/^\(..\)\(..\)$/\1:\2/'
→s/ A / B /
s
AをBに交換ㅏ:
^\(..\)\(..\)$
^
行の始まり\(
グループ1キャプチャの開始は(
リテラルです(
。.
任意の文字に一致してキャプチャグループ1に追加します。.
任意の文字に一致してキャプチャグループ1に追加します。
\)
キャプチャグループ1を終了します。\(
キャプチャグループ2を起動します。.
任意の文字に一致してキャプチャグループ2に追加します。.
任意の文字に一致してキャプチャグループ2に追加します。
\)
キャプチャグループ2を終了します。
$
行の終わりと一致します。
- 第二:
\1:\2
\1
キャプチャグループ1を印刷します。:
テキスト印刷:
\2
キャプチャグループ2を印刷します。
言い換えれば:
書く:
1234
4567
標準出力を生成しますsed
。
at sed
;標準入力から読み取って4文字の行に一致します。最初の2つと最後の2つをコロンで区切り、結果を印刷します。
12:34
45:67