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

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

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

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

grep

grepはコマンドライン上でテキスト検索を可能にするユーティリティーです。元はUnixのために用意されたものです。

Q&A

解決済

1回答

3980閲覧

grepとif文を組み合わせてファイル出力した際に意図した結果にならない

lifeguard

総合スコア16

bash

bash(Bourne-again-Shell)は sh(Bourne Shell)のインプリメンテーションに様々な機能が追加されたシェルです。LinuxやMac OS XではBashはデフォルトで導入されています。

grep

grepはコマンドライン上でテキスト検索を可能にするユーティリティーです。元はUnixのために用意されたものです。

0グッド

0クリップ

投稿2021/10/13 10:53

fileaというファイルに対し、sample.shを実行しresult.txtに出力結果を出力しております。
その際、fileaの2行目、3行目については期待した結果が出力されているのですが、1行目については期待した結果(aaa.jpg)が出力されておりませんでした。
出力結果からするとif文の指定を間違っていそうなのですが、自力では解決できそうにありませんのでご協力の程宜しくお願い致します。

filea

112345,/home/test/a1/b1/aaa.jpg 212345,/home/test/a2/aaa.bmp 312345,/home/test/a3/aaa.txt

bash

1#!/bin/bash 2cd `dirname $0` 3 4while read line 5do 6 if sudo grep -e 'a1' filea 7 cut -f 6 -d "/" filea > result.txt; 8 then 9 cut -f 5 -d "/" filea > result.txt; 10 fi 11done < ./filea

result

1b1 2aaa.bmp 3aaa.txt

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

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

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

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

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

itagagaki

2021/10/13 11:05

read line は何のためですか?
lifeguard

2021/10/13 11:46

参考にしたサイトに書いてあったため、そのままコピペしておりました。 lineの部分は任意の変数とのことで、今回は変数は特に使用しないので不要ですね。 申し訳ありません。
guest

回答1

0

ベストアンサー

if sudo grep -e 'a1' filea cut -f 6 -d "/" filea > result.txt; then cut -f 5 -d "/" filea > result.txt; fi

basename $line >>result.txt

で、いけるんじゃ?
--- 追記 ---
ちなみに、やりたかったのはこういうことかな

bash

1while read line 2do 3 echo $line | grep -e 'a1' >/dev/null 4 if [ $? -eq 0 ] 5 then 6 p=6 7 else 8 p=5 9 fi 10 echo $line | cut -f $p -d "/" >>result.txt 11done <filea

投稿2021/10/13 11:29

編集2021/10/13 11:43
takasima20

総合スコア7464

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

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

lifeguard

2021/10/13 12:07

追記に記載されている内容が、まさしくやりたかったことです。 ベストな回答ありがとうございます。 /dev/nullの使い方も勉強になりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問