【发布时间】:2023-03-22 20:24:01
【问题描述】:
我连续运行两个awk 命令以根据多个分隔符分解字符串。我想知道它们是否可以组合成一个命令。
输入数据(jot -w "some string, this is number " 10):
some string, this is number 1
some string, this is number 2
some string, this is number 3
some string, this is number 4
some string, this is number 5
some string, this is number 6
some string, this is number 7
some string, this is number 8
some string, this is number 9
some string, this is number 10
这只是示例数据,但我希望能够先根据逗号拆分字符串,然后从第二部分中提取数字(第四个单词)。实际上,字符串第一部分中的空格数可能会有所不同,即以下内容将是有效输入:
some string, this is number 1
some string with more spaces, this is number 2
以下命令可以正常工作:
$ jot -w "some string, this is number " 10 | awk -F ',' '{print $2}' | awk -F ' ' '{print $4}'
1
2
3
4
5
6
7
8
9
10
有没有什么简单的方法可以将这两个命令组合成一个命令?
【问题讨论】:
-
awk将正则表达式作为分隔符,但如果逗号之前的部分可以有不同数量的字段,则可能需要运行两个awks。也许您可以将cut用于“更简单”的部分? -
@jasper
cut绝对是一个选项,谢谢,是的,我知道awk可以使用正则表达式作为分隔符,但即使空格数之前没有变化逗号,执行两个连续的 awk 语句(在我的应用程序中)比必须更改第二个程序中的字段索引更具可读性。不过感谢您的评论。
标签: awk