5

ディレクトリ内のすべてのヘッダーを出力したいと思います。1 行に 1 つのエントリがあり、各行は 4 つの空白で始まり、空白と「\」文字で終わる必要があります。

____header1.h_\
____header2.h_\
____header3.h_\

出力を 1 行に 1 エントリにする方法は既に理解しました。

ls -1 *.h

しかし、私はフォーマットを行う方法がわかりません。より複雑な書式設定を学ぶにはどこを見ればよいですか?

編集:

すべての回答のすべてのスクリプトは、目的の出力を生成します。すべての答えを受け入れることができればいいのにと思います。

4

5 に答える 5

11

printf出力をフォーマットするのではなく、グロビングを使用してシェルすることができますls

次のようなものを試してください:

$ printf '    %s \\\n' *.h
    a.h \
    b.h \
    c.h \

lsは実際には人間のための「インタラクティブな」ツールとして意図されており、それ以外の目的での使用は避けてください。

于 2013-08-05T07:14:52.277 に答える
2
ls -l *.h|awk '/\.h/{print "    "$0" \\"}'

または awk でより簡単な方法で:

> ls -1 *.h | awk '$0="    "$0" \\"'

テスト済み:

> ls -1 *.hh 
Algorithms.hh
Timer.hh
a.hh
> ls -1 *.hh | awk '/\.hh/{print "    "$0" \\"}'
    Algorithms.hh \
    Timer.hh \
    a.hh \
> 

または、perl を使用できます。

ls -1 *.h | perl -plne '$_="    ".$_." \\";'
于 2013-08-05T07:11:43.203 に答える