获取第N个字段的第1个字符的位置

获取第N个字段的第1个字符的位置

假设我想获取以下行第二个字段(即“脚本”)的第一个字符的左侧位置(即 7):

Shell scripting is amazing.

请建议某种方法,最好使用 awk。

答案1

使用任何 POSIX awk 并假设您使用默认的 FS:

$ awk -v n=2 '{match($0,"[[:space:]]*([^[:space:]]+[[:space:]]+){"n-1"}"); print RLENGTH+1}' file
7

前面的内容[[:space:]]*是考虑到 awk 在给定默认值的第一个字段之前跳过前导空白FS,无条件打印RLENGTH+1是为了确保它始终打印一个数字,即使/当行上没有与您一样多的字段时要求找到 的开头(在这种情况下会打印0)。

相关内容