0

行のリストを含む文字列があります。特定の文字列を検索し、その文字列を含むすべてのパスを一覧表示したいと考えています。指定された文字列には次が含まれます。

  755677 myfile/Edited-WAV-Files
  756876 orignalfile/videofile
  758224 orignalfile/audiofile
  758224 orignalfile/photos 
  758225 others/video
  758267 others/photo 
  758268 orignalfile/videofile1
  758780 others/photo1

元ファイルから始まるパスのみを抽出して一覧表示したい。私の出力は次のようになります。

 756876 orignalfile/videofile
 758224 orignalfile/audiofile
 758224 orignalfile/photos 
 758268 orignalfile/videofile1
4

5 に答える 5

1

それは十分に簡単に見えます...

echo "$string" | grep originalfile/

また

grep originalfile/ << eof
$string
eof

または、ファイル内にある場合は、

grep originalfile/ sourcefile
于 2013-01-05T16:17:25.270 に答える
0

文字列が次のように複数の行にまたがる場合:

755677 myfile/Edited-WAV-Files
756876 orignalfile/videofile
758224 orignalfile/audiofile
758224 orignalfile/photos
758225 others/video
758267 others/photo
758268 orignalfile/videofile1
758780 others/photo1

次に、このコードを使用できます。

echo "$(echo "$S" | grep -F ' orignalfile/')"

文字列が改行で区切られていない場合

echo $S | grep -oE "[0-9]+ orignalfile/[^ ]+"
于 2013-01-05T16:24:44.993 に答える
0
egrep '^[0-9]{6} orignalfile/' <<<"$string"

ノート:

  • the^は文字列の先頭に一致します。orignalfile/たまたま中間にあるものと一致させたくない

  • [0-9]{6}各行の先頭の 6 桁に一致します

于 2013-01-05T16:25:21.450 に答える
0

bash ソリューション:

while read f1 f2
do
     [[ "$f2" =~ ^orignal ]] && echo $f1 $f2
done < file
于 2013-01-05T16:23:15.173 に答える
0

文字列に改行/改行が含まれていますか? その場合、DigitalRoss のソリューションが適用されます。

改行が含まれていない場合は、改行を含める必要があります。例では、コードが次のようになっている場合

string=$(ls -l)

次に、改行なしでフィールド区切り文字列を先頭に追加する必要があります。

IFS=$'\t| ' string=$(ls -l)

または空の IFS 変数を使用:

IFS='' string=$(ls -l)

bash man ページからの IFS のドキュメント:

IFS    The  Internal  Field  Separator  that  is  used for word splitting after
       expansion and to split lines into words with the read builtin command.  The
       default value is ``<space><tab><newline>''.
于 2013-01-05T16:30:03.490 に答える