web-dev-qa-db-ja.com

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

cutcut file.txt -d {0..9} -f 1などの機能をサポートしていないようです

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

3
mttpgn
$ 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]'を使用すると、数字の前のスペースも削除されます。

8
Kusalananda

そして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 
5
tink

GNU grep:

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

GNU grep

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

123fooのような行、つまり数字の左側の部分が空の行については何も出力しないことに注意してください)。

1
iruvar