35164

[code]

    [[File:AAA.jpg]]
    [[Image:BBB.png|5MB|2015]]
    CCC.gif|1MB
    [[ファイル:DDD.svg|5MB]]
    
[/code]

上記のような沢山のファイルの情報が記述されたテキストファイルがあります。このファイルを下記のようにしたいのですがやり方が分かりません。

[code]

    AAA.jpg
    BBB.png
    CCC.gif
    DDD.svg
    
[/code]

下記のコマンドでファイル名よりも前の文字を削除することは出来ましたが、ファイル名より後ろの文字の削除が出来ません。どうかご教授いただけませんでしょうか。

[code]

    sed -i -e 's/\[\[Image://gi' -e 's/\[\[File://gi' -e 's/\[\[ファイル://gi' -e 's/\|*//g' -e 's/\]\]//g' filename.txt
    
[/code]


CC BY-SA 3.0
2017-05-31T12:26:36.430
35162
2020-07-25T05:52:21.767
13763
question
linux bash shellscript sed
Linuxでの文字列削除


sedだけで済ませるなら例えばこんな感じで如何でしょうか。

[code]

    sed -e 's/^\[\[//g' -e 's/\]\]$//g' -e 's/\([^|]\+\)|.*/\1/' -e 's/.*:\([^:]\+\)/\1/' filename.txt
    
[/code]


CC BY-SA 4.0
2017-05-31T13:14:56.947
35164
2020-07-25T05:52:21.767
2020-07-25T05:52:21.767
3060
3060
35162
answer

[code]

    cat filename.txt | tr '[]:|' '\n'|sort | egrep -e '^[a-zA-Z]*\.[a-z]*$'
    
[/code]


CC BY-SA 3.0
2017-05-31T14:00:44.860
35168
2017-05-31T14:00:44.860
5008
35162
answer

[code]

    $ sed -n 's/^\(.*[^a-zA-Z0-9]\)\{0,1\}\([a-zA-Z0-9]\{1,\}\.[a-zA-Z0-9]\{1,3\}\)\([^a-zA-Z0-9].*\)\{0,1\}$/\2/p' input.txt
    
[/code]


CC BY-SA 3.0
2017-05-31T16:41:22.910
35174
2017-05-31T16:41:22.910
3061
35162
answer