awk
で遊んでいる間、私は実行するようになりました:
ls -la >> a.txt ; awk {'print $5 $1'} a.txt ;
これにより、次のような出力が得られます。
53277-rw-------
52347-rw-------
出力のこれら2人の友人の間にスペースを確保するにはどうすればよいですか?
行を変更するだけです
ls -la >> a.txt ; awk {'print $5 " " $1'} a.txt ;
これにより、出力がスペースで印刷されます。
お役に立てれば。
編集:
McNisse で示唆されているように、適切な出力形式を提供するprintfを使用できます。
ls -la >> a.txt ; awk {'printf ("%5s\t%s\n", $5, $1)'} a.txt ;
別のawk固有の手法、「出力フィールド区切り記号」を使用
ls -la | awk -v OFS='\t' '{print $5, $1}'
ここではカンマが重要です。
タブを取得する簡単な方法は次のとおりです。
awk {'print $5"\t"$1'}
私はこれが古いスレッドであることを知っていますが、私は学習しているだけであり、これらの投稿が役に立つと感じました。私の最善の解決策は、変数の間にスペースを挿入するためにgawkを使用することでした。
ls -la | gawk '{print $1, $9}'
引数の間にスペースを入れるには、" "
を追加するだけです。 awk {'print $5" "$1'}
。
ただし、notは ls
コマンドの出力を解析 に推奨されます。これは信頼性が低く、出力が人間向けであるためです、スクリプトではありません。したがって、find
やstat
などの代替コマンドを使用してください。
GNU stat
を使用した例を次に示します。
$ stat -t *
001.txt 23 8 81a4 501 20 1000004 242236402 1 0 0 1460260387 1460260239 1460260239 1460260194 4096
7c1c.txt 21 8 81a4 501 20 1000004 242236595 1 0 0 1460261322 1460260486 1460260486 1460260486 4096
マシンに優しい出力(簡潔な形式)が出力されるため、必要なものを正確に取得できます。次に、-c
を使用して特定の形式を使用するか、awk
、cut
またはread
を使用して正しい列を取得します。
その他のオプションについては、stat --help
を確認してください。たとえば、変更日を出力するには、 この例 をチェックします。