sed
擬似コード:
sed
"FROM"
$to = ".*";$
"TO"
$to = "'"$new_email_address"'";
"GLOBAL"
FILE_PATH
- 改行のみ許可されます。
- タブのインデントを許可する
- 単一行分割を使用する必要はありません。
- 以下のようにコマンドを引用符で囲む必要はありません。
sed "/s/X/Y/g" FILE
- 上記の例のようなデータ構造を使用する方が簡単です
"'"$new_email_address"'"
。なぜなら、すでに引用符で示されている密で長い行の中にはないからです。また、改行は、変数を含む文字列に対してのみいくつかの新しい文字を使用して実行できます。STRING_WITH_VARIABLEEXPANSION data STRING_WITH_VARIABLEEXPANSION
引用符の代わりに拡張( )
一般的な構文よりもアクセスしやすく、秩序整然とするので、このような構文を使用することができて嬉しいです。sed
したがって、タイトルに質問があります。
ベストアンサー1
よりアクセスしやすいものを開発する試みがあることを知っていますsed
。しかし、それはまさにあなたが望むものではありません。
標準偏差
直感的なCLIの検索と置換(sed
代替)rust
。
機能が制限されています(sed
. 超能力が必要な場合は、その他のsed
ユーティリティの詳細を学ぶことをお勧めします。)sd
Fedora 34(for dnf install sd
)とUbuntu 21.04(Ubuntuを使用してCargoと依存関係をインストールしました:)でテストしましたbuild-essential
。
改行をカンマに置き換えます。
sd: sd '\n' ',' input.txt
sed: sed -i ':a;N;$!ba;s/\n/,/g' input.txt
sd
この場合、構文はと同じですtr
。
tr '\n' ',' < input.txt
その場所でファイルを変更します。
sd: sd before after file.txt
sd: sd 'before this' 'after that' file.txt
sed -i 's/before/after/g' file.txt
スラッシュを含む文字列からコンテンツを抽出します。
# Strings between () are groups.
echo "sample with /path/" | sd '.*(/.*/)' '$1'
/path/
echo "sample with /path/" | sd '(.*)/.*/' '$1'
sample with
# Capture two groups and invert.
echo "sample with /path/" | sd '(.*)(/.*/)' '$2$1'
/path/sample with
echo 'lots((([]))) of special chars' | sd -s '((([])))' ''
lots of special chars
-s, --string-mode
Treat expressions as non-regex strings
複数行の交換:
sd 'test\nmultiline' 'this\ntest' input.txt
別のオプション:
-p, --preview
Output result into stdout and do not modify files
より簡単な試みがありますfind
(rust
また開発中です)。
FD。