Bash sed 替换文本文件中的所有内容,直到出现第一个字母字符

Bash sed replace everything in a textfile until the apperance of the first alphabetic character

有人可以帮我解决这个问题吗?我有一堆 text-files,我想更改。它们都以其他字符开头,而不是普通的字母字符。我现在想删除字母字符出现之前的所有内容,以便它们以标题开头,并保持其他所有内容完整无缺。

这里有一个例子:

=================================================================================

TITLE OF SONG

Text text text
Text text text

ReFrain:
Text text text

written 16.08.1998

我希望它看起来像这样

TITLE OF SONG

Text text text
Text text text

ReFrain:
Text text text

written 16.08.1998

我试过这样做:

for f in *.txt; do sed 's/^.*[a-zA-Z]/^.[a-zA-Z]/g'; done

它不起作用

我对此还很陌生,所以请多多包涵。

最佳史蒂夫

使用sed

$ sed 'N;N;s/\("\).*\n\([[:alpha:]]\+\)//' input_file
"TITLE OF SONG

Text text text
Text text text

ReFrain:
Text text text

written 16.08.1998"

$ sed ':a;N;s/\("\)[^[:alpha:]]*\n\([[:alpha:]]\)//;ba' input_file
"TITLE OF SONG

Text text text
Text text text

ReFrain:
Text text text

written 16.08.1998"

Perl 在这里很方便:

perl -0777 -i -pe 's/^[^[:alpha:]]+//s' file ...

-0777 选项导致 perl 将整个文件拖入默认变量,
并且 s/// 命令删除所有前导 non-alpha 个字符。