1 つ以上の数字で区切られたファイルの切り取り

1 つ以上の数字で区切られたファイルの切り取り

次の列が始まるランダムな数に加えて、特定の区切り文字を持たないテキストファイルの最初の列を抽出する方法を探しています。例:

John Smith 1234 Main Street
Amy Brown and Sally Williams 9 Drury Lane
Sunny's 1000 Brown Avenue

予想される出力は次のとおりです。

John Smith
Amy Brown and Sally Williams
Sunny's

cut次の機能はサポートされていないようです。cut file.txt -d {0..9} -f 1

ソリューションはすべての標準UNIXユーティリティを使用できます。

答え1

$ awk -F'[0-9]' '{ print $1 }' file
John Smith
Amy Brown and Sally Williams
Sunny's

-F'[0-9]'数値は入力データのフィールド区切り文字として扱われ、フィールドを区切るprint $1最初の数字を出力すると言います。

-F'[0-9]'に変更すると、-F' *[0-9]'数字の前のすべてのスペースも削除されます。

答え2

解決策は次のとおりですsed

echo "John Smith 1234 Main Street
Amy Brown and Sally Williams 9 Drury Lane
Sunny's 1000 Brown Avenue" | sed 's/ *[0-9].*$//'
John Smith 
Amy Brown and Sally Williams 
Sunny's 

答え3

GNU grep:

grep -Po '.*?(?=\s*\d)' file

答え4

GNUと共にgrep

grep -o '^[^[:digit:]]*' file

123foo(と同じ行、つまり数字の左側に空白部分がある行には何も出力されません。)

関連情報