我对这些笨拙的脚本有一些问题
sed -E 's/(^[a-zA-Z]+)([[:space:]]+[a-zA-Z]+){0,1}.*/12/' file1.txt | sort | uniq > zz.txt
或其他等效物(Windows GNU)
awk "match($0, /^[a-zA-Z]+( +[a-zA-Z]+)?/) {unq[substr($0, 1, RLENGTH)]} END {for (i in unq) print i}" file.txt > ZZ.txt
或者另一个 Linux 是
sed -E 's/s+S+s+[0-9]S+$|[0-9].*//;s/(S+s+S+)s+S+$/1/
H;x;s/((n[^n]*)(n[^n]*)*)2$/1/;x;$!d;x;s/.//' file
这些脚本有什么作用?获取这样的列表
Chi Allegati N.22021.htm
Casabella Marzo 2021.pdf
Casabella Febbraio 2021.pdf
Chi Allegati N.22021.pdf
使用SED/awk脚本后,您将获得此输出
Casabella
Chi Allegati
那么问题出在哪里呢?好的,现在考虑另一个列表
(Ebook ITA Fumetti) Genius 021 Bersaglio A Gog.cbr
(Ebook ITA Fumetti) Genius 022 Poker Di Delitti.cbr
Corna Vissute - La moglie del ladro.cbz
Corna vissute - Nuova serie 011 - Un'offerta irresistibile.cbr
Il piccolo sceriffo 20 (Dardo 1992-02) [c2c CapitanUltra].cbz
Il piccolo sceriffo 23 (Dardo 1992-05) [c2c dinofelix].cbr
Il mondo di Arkadi - Caza 01 - Gli occhi di Or'Fe (by aquila & Janesek).cbr
Il mondo di Arkadi - Caza 02 - Il grande esterno (by aquila & Janesek).cbr
Il segno di Zorro 21 (Edizioni del fanciullo 9-1976)(BYPico57).cbr
Il segno di Zorro Serie d'oro 07 - Il mistero della miniera (Edizioni del fanciullo 1975-10-01) [c2c Dinofelix].cbr
L'Uomo Mascherato 06 - Il ratto di diana (Nerbini 1938-09) [c2c Scaricatore17-Gitra].cbr
L'Uomo Mascherato 08 - Il ritorno di Diana (Nerbini 1940-10) [c2c Scaricatore17-Gitra].cbr
Le leggende di Batman 017 (Play Press 1997-12 c2c) By Samox.cbz
Le leggende di Batman 018 (Planeta 1998-01 c2c) [Play Press] By Samox.cbz
不幸的是,脚本不再运行良好。事实上,我想获得这个输出(或非常接近的东西),但这是不可能的
Corna Vissute
Genius
Il mondo di Arkadi
Il piccolo sceriffo
Il segno di Zorro
Il segno di Zorro Serie d'oro
L'Uomo Mascherato
Le leggende di Batman
脚本背后的逻辑:
- 操作该行以仅包含必填字段。
- 追加到保留空间。
- 到保留空间,删除重复的行并交换回模式空间。
- 删除除最后一行之外的所有内容。
- 在最后一行,交换到保留空间,删除第一个换行符并打印结果。
编辑:添加另一个脚本处理不正确的示例
我有这个列表
A porte chiuse 054 - Come la prima notte (Ediperiodici 1985-11) [noc2c Charles].cbr
A porte chiuse 097 - Il demone nella bottiglia (Ediperiodici 1989-06) [c2c noedit Charless].cbr
A Porte Chiuse 138-139 - Una viziosa incallita.cbr
A porte chiuse Special 13 - Il primo amore-Il viziaccio [228pag] (Ediperiodici 1986-03) [c2c Charles-Edit Gitra].cbr
A Porte Chiuse Special 020 [Fumetti.Erotici](1400~).cbz
但我只期望这个输出
A porte chiuse
A porte chiuse special
但是脚本返回这个
A Porte
A porte
编辑:另一个问题:我有
Il destino di Kakugo - vol 09 (MANGA ITA)(Scan & Edit by DDT)(DDT0580)(MQ jpg).cbr
Il mensile di Barbapap… N. 02 - [A.Mondadori] [1977-01] [ITA][c2c](no pagina centrale).cbz
但它让我回来
il
Il destino di Kakugo
Il mensile di Barbapap
或者我有
Y L'Ultimo Uomo.-.Ragazze vol 07.-.(Magic Press)(c2c aquila).cbr
Y L'ultimo Uomo [08] Bambole Di Carta (Magic Press)(c2C Aquila).cbr
Yiu 01 - Inferno.cbr
Yiu 03 - Assassini (Scanlation, Ita, By Eleinad For Lc22Db).cbr
但它让我回来
Y
Y L'ultimo Uomo
Yiu
但我期待
Il destino di Kakugo
Il mensile di Barbapap
Y L'ultimo Uomo
Yiu
这个修改后的awk
脚本来自我上一个答案应该适合你:
awk '{sub(/^([^)]+) */, "")} match($0, /^[a-zA-Z][a-zA-Z 47]*( +[a-zA-Z 47]+)*/) {s = substr($0, 1, RLENGTH); unq[tolower(s)]=s} END {for (i in unq) print unq[i]}' file.txt
Il segno di Zorro Serie d'oro
L'Uomo Mascherato
Il mondo di Arkadi
Il piccolo sceriffo
Le leggende di Batman
Corna vissute
Il segno di Zorro
Genius
更具可读性的版本:
awk '
{sub(/^([^)]+) */, "")}
match($0, /^[a-zA-Z][a-zA-Z 47]*( +[a-zA-Z 47]+)*/) {
s = substr($0, 1, RLENGTH)
unq[tolower(s)] = s
}
END {
for (i in unq)
print unq[i]
}' file.txt
这是一个 sed 替代方案:
sed -E 's/(^[^0-9-.[…-]* ?).*/1/' input | sort -u