次の行の2番目のフィールド(「スクリプト」など)の最初の文字の左側の位置(例: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
)。