いくつかの質問があります。
/group/book/four/wordにあるファイルの行を、含まれている行数に基づいて並べ替えて一覧表示しました。
$ wc -l /group/book/four/word/*|sort -n
...わかりました:
2 /group/book/four/word/wer.txt
2 /group/book/four/word/rti.txt
3 /group/book/four/word/cool.txt
これが私が欲しいです!完璧。
しかし、今作成されたリストにファイル名のみを含めたいと思います。たとえば、次のようになります。
wer.txt
rti.txt
cool.txt
「od」コマンドを使用してこれをどのように実行できますか?
上記で得られた結果行の先頭にある数字を削除するには、「sed」をどのように使用しますか?最初の2行に対してのみ同じことをどのように実行できますか?
答え1
パス名拡張子を持つファイルのリストが表示されます。
cd /group/book/four/word
echo *
# or into a file
echo * >/path/to/filelist.txt
最初から最初のスペース(またはスペースグループ)を含む1行のすべてのコンテンツを削除できますsed
。
sed 's/^[^ ] *//g'
od
私はこれがどんな関係があるかわかりません。
sed
たとえば、3行目で終了するようにするには、最初の2行に制限できます。
sed -e 3d -e 's/^[^ ] *//g'
答え2
私はsed
その後に入れて、あなたが望むすべてのファイルを一度に書くsort
ようにします。w
wc -l /group/book/four/word/*|sort -n |
sed 'w ./not_as_yet_touched.txt
1,2s/^[0-9 ]*//w ./first_two_lines_without_line_numbers_or_leading_spaces.txt
s|.*/||w ./everything_up_to_first_slash_trimmed.txt'
作成したように、sed
上記のすべてのコマンドを実行した結果はまだ自動的に印刷されますが、結果は端末に表示されます。(あるいはどこにstdout
行っても)最後のファイルの内容だけが忠実に反映されます。残りの2つは行w
サイクルで異なる時間に記録されるため、内容も異なります。sed
しかしod
…まあ…od
そうではありません。限界データが多すぎますダンプそれ。od
他のフィルタと組み合わせることができます。(例えばsed
)要求どおりに行の一部を消去します。しかし、/
文字の間に具体的で規則的なバイト数がない場合、おそらくあまり役に立たないでしょう。もちろん、最後のコマンドではこれを処理する必要があります。