剪切以一位或多位数字分隔的文件

剪切以一位或多位数字分隔的文件

我正在寻找一种方法来提取文本文件的第一列,该文本文件除了下一列开始的任意数字之外没有特定的分隔符。例子:

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

与GNUgrep

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

(请注意,对于像 之类的行,它不会输出任何内容123foo,即数字左边部分为空的行)。

相关内容