sed 's/[long1][long2]/[long3][long4]/' file.txt
このコマンドを次のようにfx複数行に分割したいと思います。
sed 's/
[long1]
[long2]
/
[long3]
[long4]
/' file.txt
文字列を区切るためにまたはを使用しても\
機能しません。
答え1
sed 's'/\
'[long1]'\
'[long2]'\
'/'\
'[long3]'\
'[long4]'\
'/' file.txt
新しい行をインデントしない場合は、バックスラッシュを使用して複数の行を分割できます。
$ echo "a,b" | sed 's/\(.'\
> '\),\(.\)/\2-\1/'
b-a
GNU sed 4.2.2を使用してCygwinでテストされました。
答え2
一方:
上記のプロジェクトはどれくらいメンテナンスが簡単ですか[long]
?
条項を短く、明確に保つほど、時間の経過とともに、条項の変更と強化が容易になり、その条項が提供する機能に関する(sed-外部)事実が変わります。
例えば
sed\ -e 's/[min-s1]/[min-r1]/' \ -e 's/[最小-s2]/[最小-r2]/' \ -e 's/[最小-s3]/[最小-r3]/' \ -e 's/[最小-s4]/[最小-r4]/'
...努力して楽しむ価値があることになることもあります。
答え3
長い文字列をbash変数に保存してから、sed
コマンドで使用できます。
string=[long1][long2]
replace=[long3][long4]
sed -e 's/'"$string"'/'"$replace"'/' file
以下が利用可能な場合は、perl
修飾子で長いパターンを壊すことができますx
。
perl -e 's/
[long1]
[long2]
/[long3][long4]/x' file
答え4
次のように分解することもできます。
sed '/[long1][long2]/
s//[long3][long4]/'
または、次のようになります。
sed "$(
printf 's/[%s][%s]/[%s][%s]/' \
long1 \
long2 \
long3 \
long4
)"
または区切り記号を使用してください。
sed -f - <<SED file.txt
s/\
[long1]\
[long2]\
/\
[long3]\
[long4]\
/
SED