假设我想获取以下行第二个字段(即“脚本”)的第一个字符的左侧位置(即 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
)。