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

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

新規登録して質問してみよう
ただいま回答率
85.48%
シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

sed

sedとは、POSIX環境のために作られたコマンドラインエディタです。sedは編集スクリプトの指示のもとに複数のファイルを編集し、標準出力にその結果を出力します。

AWK

AWKは、UNIX 上で開発されたプログラミング言語で、CSVファイルなどのテキストファイルの処理を目的にデザインされています。

Q&A

3回答

510閲覧

sed、awkを使用したテキスト処理

sho88

総合スコア19

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

sed

sedとは、POSIX環境のために作られたコマンドラインエディタです。sedは編集スクリプトの指示のもとに複数のファイルを編集し、標準出力にその結果を出力します。

AWK

AWKは、UNIX 上で開発されたプログラミング言語で、CSVファイルなどのテキストファイルの処理を目的にデザインされています。

0グッド

0クリップ

投稿2022/09/12 15:04

編集2022/09/12 15:05

ls -lR で取得した以下の形式のリストがあります。
シェルスクリプトでもsed、awkで実現を試みていますが、どうもうまく行きません。
実現したいことは、フルパス表示のファイル一覧です。

ご教示お願いいたします。

前提(※手元にあるリスト)


/pass/guest/img:
total 422
-rw-r--r-- 1 nobody nobady 2356851 Nov 15 2012 list2.pdf
-rw-r--r-- 1 nobody nobady 1670 Nov 15 2012 index.html

/pass/guest2/img:
total 544
-rw-r--r-- 1 nobody nobady 552796 Nov 15 2012 lisbb.jpg

/pass/guest3:
total 13346
drwxr-xr-x 2 nobody nobady 4096 Oct 24 2012 book_fig
-rw-r--r-- 1 nobody nobady 927 Oct 24 2012 index.html
-rw-r--r-- 1 nobody nobady 199484 Oct 24 2012 listc.jpg
-rw-r--r-- 1 nobody nobady 13248643 Oct 24 2012 0000.pdf
-rw-r--r-- 1 nobody nobady 149314 Oct 24 2012 Stations.jpg

実現したいこと(フルパス表示形式のファイル一覧)


/pass/guest/img/list2.pdf
/pass/guest/img/index.html
/pass/guest2/img/lisbb.jpg
/pass/guest3/index.html
/pass/guest3/listc.jpg

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

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

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

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

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

guest

回答3

0

※ ファイル名に newline や carriage return などは含まれていない、という前提

bash

1cat files.lst | sed -nE '/^\//,/^$/{ 2 s@:$@/@ 3 h 4 n 5 :a 6 n 7 /^$/b 8 s/^([^ ]+ +){8}// 9 G 10 s:([^/]+)\n(/.+):\2\1:p 11 ta 12}'

投稿2022/09/12 16:25

melian

総合スコア19714

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

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

0

学習目的でないのなら、bashを使っている前提で

ls -la $PWD/*

でいかがでしょう。

awkで処理したいなら、だいぶんアドホックですが、こんなので用は足りそうな気がします。

ls -lR|awk '/^[^ ]*:$/{dir=$0; sub(":$","/",dir)} NF>8{print dir $NF}'

投稿2022/09/13 05:25

KojiDoi

総合スコア13671

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

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

0

sed awkの学習目的でしょうか?
そうではなくて、結果が得られれば他の手段でも良いのであれば、findコマンドを使うのが良いです。
find /pass -type fとか。

投稿2022/09/12 16:11

otn

総合スコア84505

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

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

otn

2022/09/13 13:04

> ls -lR で取得した以下の形式のリストがあります。 失礼しました。今その環境にアクセスできるわけじゃなくて、そのファイルしか無いということであれば、 findコマンドの実行しようが無いですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問