私が探しているように、パターン文字列が繰り返されるファイルがあり、ファイルABC:10
から毎回ABC:10
それらを変換する必要があります。XYZ:5
トリック部分は数字部分です。たとえば、10は時間ベースなので、ファイルをダウンロードするたびに変更されるため、X
数字を考えることができます。
ABC:X
-> XYZ:(X-5)
。
ファイルの番号は常に同じですが、ファイルを再ダウンロードすると、スケジュールに従って変更されます。身分証明書を紛失しないことも重要です。
次のファイル例の場合、デフォルトではレベル3が残るたびに58.1日の残りのレベル3 - >データと58.1 - > 28.1(X-30)を変更する必要があります。レベル3の残りの回数は、ファイルをダウンロードするたびに常に同じですが、その数字はデフォルトで残りの日数なので、1日が過ぎると1ずつ減少します。
ファイルの例:
port: 6666
socks-port: 6699
redir-port: 6669
allow-lan: true
mode: Rule
log-level: info
external-controller: 0.0.0.0:9090
dns:
enable: true
ipv6: false
# listen: 0.0.0.0:53
# enhanced-mode: fake-ip
nameserver:
- 223.5.5.5
- 114.114.114.114
# - 'tls://dns.rubyfish.cn:853'
#fallback:
# - 'tcp://208.67.222.222:443'
# - 'tls://1.0.0.1:853'
# - 8.8.8.8
proxies:
- type: ss
server: test.com
port: 49679
password: test.com
cipher: aes-128-gcm
name: ♥流量:300.93GB 等级3剩:57.8天
proxy-groups:
- name:
答え1
努力する
awk -v days=30 '/等级3剩/ { for(i=1;i<=NF;i++)
if ( $i ~ /等级3剩:/ ) { split($i,A,":") ; $i = "DATA:" A[2]-days "天" ;}}
{print;}'
どこ
/等级3剩/
「レベル3左」行を選択してください。for(i=1;i<=NF;i++) if ( $i ~ /等级3剩:/ )
ループパラメータ検索モードsplit($i,A,":")
A[1]とA[2]の「:」分割パターン(この例では)$i = "DATA:" A[2]-days "天" ;
調整値{ print }
すべての内容を印刷します(ラインを変更するかどうかにかかわらず)。
参考にしてください
わかりやすくするために、プログラムを複数行に入れましたが、1行にしても構いません。
必要に応じて外部変数を使用できるようにこれを使用します
-v days=30
(例-v days=$DAYS
:)コメントで述べたように、認識が失われたようです。
- name: