質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

Q&A

解決済

3回答

4045閲覧

sedコマンドを用いてワイルドカードをルート側のディレクトリに使用した場合、一つ目の結果しか得られません。これを二つ目以降も全て表示されるようにするにはどうすれば良いでしょうか?

nishiys

総合スコア33

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

UNIX

UNIXとは、AT&Tのベル研究所で開発されたコンピューター用のマルチユーザー・マルチタスクのオペレーションシステム(OS)です。政府や教育機関や研究所で広範囲に採用されています。

0グッド

0クリップ

投稿2017/09/13 10:36

###質問

sedコマンドを用いてワイルドカードをルート側のディレクトリに使用した場合、一つ目の結果しか得られません。これを二つ目以降も全て表示されるようにするにはどうすれば良いでしょうか?

#現在の状況
現在の状況は以下のようになっています。
$ls
1d 2d 3d

$ls 1d
case1 case2 case3

$ find *d/case1/foo.txt
1d/case1/foo.txt
2d/case1/foo.txt
3d/case1/foo.txt

ここで1d~3d全てのcase1/foo.txtの7行目を表示したい時、以下のように1d/case1/foo.txtの7行目のみが出力され、残りの2d,3dの結果は出力されません。
$ sed -n -e '7p' *d/case1/foo.txt
0.011516 0.157467 -0.052614

###補足情報(言語/FW/ツール等のバージョンなど)
macOS Sierra
iTerm2
bash

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

sed -n -e '7p' *d/case1/foo.txtだと、マッチする全ファイルを連結した物に対して、7行目を表示しますので、お書きの現象になります。
sedを使うのであれば、ファイル毎に実行しないといけません。

Bash

1ls -1 *d/case1/foo.txt | xargs -l sed -n -e 7p 2または、 3for f in *d/case1/foo.txt 4do sed -n -e 7p $f 5done

あるいは、awkを使うか。awkだとファイル単位に処理出来ます。

Bash

1awk FNR==7 *d/case1/foo.txt

投稿2017/09/13 12:36

otn

総合スコア84499

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nishiys

2017/09/13 16:54

awkやfor文で行う方法もあるのですね!ご回答ありがとうございます。
guest

0

これでどうでしょう。

$ find *d/case1 -name foo.txt -exec sed -n -e 7p {} \;

投稿2017/09/13 10:56

KojiDoi

総合スコア13671

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nishiys

2017/09/13 15:50

ご回答ありがとうございます。無事望みの結果が得られました。 この場合、find *d/case1 -name foo.txt | xargs sed -n -e '7p' とするとやはりうまくいかないのですが両者の違いは何なのでしょうか?
KojiDoi

2017/09/13 16:01

find *d/case1 -name foo.txt | xargs echo とやってみるとわかるかと。 所望の結果は、 find *d/case1 -name foo.txt | xargs -i sed -n -e '7p' {} とすれば得られます。
nishiys

2017/09/13 16:57

ありがとうございます。
guest

0

bash

1$ sed -n -e '7p' *d/case*/foo.txt

投稿2017/09/13 10:46

emasaka

総合スコア524

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

nishiys

2017/09/13 15:40

ご回答ありがとうございます。試して見ましたがやはり一つ目しか出力されませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問