次の列が始まるランダムな数に加えて、特定の区切り文字を持たないテキストファイルの最初の列を抽出する方法を探しています。例:
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
(と同じ行、つまり数字の左側に空白部分がある行には何も出力されません。)