python 修改字符串 循环_python – 模式匹配并用if else循环替换字符串
如果您的真實(shí)輸入文件與您發(fā)布的文件相同,即使是低于一個(gè)也可以提供所需的輸出.
awk 'BEGIN{split("R,S,T",a,/,/)}f=$2~/^H[0-9]+$/{$2 = $2 a[++c]}!f{c=0}1' infile
說(shuō)明
> split(“R,T”,/) – 用分隔符逗號(hào)分割字符串“R,并保存在數(shù)組a中,所以它變?yōu)閇1] = R,a [2 ] = S,a [3] = T.
> f = $2~ / ^ H [0-9] $/ – f是變量,驗(yàn)證regexp $2~ / ^ H [0-9] $/,返回布爾狀態(tài).如果它返回true則變量f將為真,否則為false
> $2 = $2 a [c]如果高于1則為真,則修改第二個(gè)字段,因此第二個(gè)字段將具有現(xiàn)有值加數(shù)組a值,對(duì)應(yīng)于索引(c),c是預(yù)增量變量
>!f {c = 0}如果變量f為假,則重置變量c,而不是連續(xù).
最后> 1執(zhí)行默認(rèn)操作,即打印當(dāng)前/記錄/行,打印$0.要知道awk是如何工作的,請(qǐng)使用awk’1’infile,它將打印所有記錄/行,而awk’0’infile則不打印任何內(nèi)容.除零以外的任何數(shù)字都為true,這會(huì)觸發(fā)默認(rèn)行為.
檢測(cè)結(jié)果:
$cat infile
1ECLI H813 98 7.529 8.326 9.267
1ECLI H813 99 7.427 8.470 9.251
1ECLI C814 100 7.621 8.513 9.263
1ECLI H814 101 7.607 8.617 9.289
1ECLI H814 102 7.633 8.489 9.156
1ECLI H814 103 7.721 8.509 9.305
1ECLI C74 104 8.164 8.733 10.740
1ECLI H74R 105 8.247 8.690 10.799
$awk 'BEGIN{split("R,/)}f=$2~/^H[0-9]+$/{$2 = $2 a[++c]}!f{c=0}1' infile
1ECLI H813R 98 7.529 8.326 9.267
1ECLI H813S 99 7.427 8.470 9.251
1ECLI C814 100 7.621 8.513 9.263
1ECLI H814R 101 7.607 8.617 9.289
1ECLI H814S 102 7.633 8.489 9.156
1ECLI H814T 103 7.721 8.509 9.305
1ECLI C74 104 8.164 8.733 10.740
1ECLI H74R 105 8.247 8.690 10.799
如果你想要更好的格式,如tab或其他一些char作為字段分隔符,那么你可以使用下面一個(gè),修改OFS變量
$awk -v OFS="\t" 'BEGIN{split("R,/)}f=$2~/^H[0-9]+$/{$2 = $2 a[++c]}!f{c=0}{$1=$1}1' infile
1ECLI H813R 98 7.529 8.326 9.267
1ECLI H813S 99 7.427 8.470 9.251
1ECLI C814 100 7.621 8.513 9.263
1ECLI H814R 101 7.607 8.617 9.289
1ECLI H814S 102 7.633 8.489 9.156
1ECLI H814T 103 7.721 8.509 9.305
1ECLI C74 104 8.164 8.733 10.740
1ECLI H74R 105 8.247 8.690 10.799
總結(jié)
以上是生活随笔為你收集整理的python 修改字符串 循环_python – 模式匹配并用if else循环替换字符串的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: winform在表格中输入一个完整的时间
- 下一篇: typeof null的返回值是什么?_