0

私は研究者であり、Unix コマンドのスキルは限られています。現在、約 1000 個のファイルを含むフォルダーを扱っており、このフォルダーからいくつかのファイル名を抽出し、これらのファイル名を含む別のファイル (構成ファイル) を作成する必要があります。

基本的に、フォルダーには次の形式のファイル名があります。

1_Apple_A_someword.txt 
1_Apple_B_someword.txt 
2_Apple_A_someword.txt 
2_Apple_B_someword.txt 
3_Apple_A_someword.txt 
3_Apple_B_someword.txt

などなど

1000_Apple_A_someword.txt
1000_Apple_B_someword.txt

「Apple_A」を含むすべてのファイルを抽出したいだけです。また、値がファイルの名前であるこれらの「Apple_A」ファイルごとに「ラベル」(Unix 変数) を持つ別のファイルを作成したいと考えています。また、「ラベル」はファイル名の一部です (「Apple」という単語までのすべて)。たとえば、

1_Apple=1_Apple_A_someword.txt
2_Apple=2_Apple_A_someword.txt
3_Apple=3_Apple_A_someword.txt

など...まで

1000_Apple=1000_Apple_A_someword.txt

これを行う 1 行の Unix コマンドを教えてください。おそらく「awk」と「sed」を使用します

4

4 に答える 4

2

試す

ls *Apple_A* | sed 's/\(\(.*Apple\).*\)$/\2=\1/'
于 2012-09-25T23:28:41.993 に答える
1

これはうまくいくかもしれません(GNU sed):

ls -1 | sed '/^\([0-9]\+_Apple\)_A/!d;s//\1=&/'
于 2012-09-26T05:58:36.270 に答える
0

awk バージョン、参考までに:

ls -1 | awk -vFS='_' '/Apple_A/ {print $1"_"$2"="$0}'
于 2012-09-26T04:16:31.843 に答える
0
ls -1|perl -F_ -ane 'if($_=~m/Apple_A/){print $F[0]."_".$F[1]."=".$_}'
于 2012-09-26T06:00:13.620 に答える