次のawk
コマンドを使用しています。
my_command | awk -F "[[:space:]]{2,}+" 'NR>1 {print $2}' | egrep "^[[:alnum:]]"
次のようにデータを正常に返します。
fileName1
file Name 1
file Nameone
f i l e Name 1
ご覧のとおり、一部のファイル名にはスペースが含まれています。ファイル名をエコーしようとしているだけなので、これで問題ありません(特別なことは何もありません)。問題は、ループ内でその特定の行を呼び出すことです。私はこのようにしようとしています:
i=1
for num in $rows
do
fileName=$(my_command | awk -F "[[:space:]]{2,}+" 'NR==$i {print $2}' | egrep "^[[:alnum:]])"
echo "$num $fileName"
$((i++))
done
しかし、私の出力は常にnull
私も使用しawk -v record=$i
てから印刷しようとしまし$record
たが、以下の結果が得られました。
f i l e Name 1
編集
混乱して申し訳ありません: rows
は、このような ID をリストする変数で11 12 13
あり、これらの ID のそれぞれがファイル名に関連付けられています。解析を行わないコマンドは次のようになります。
id File Info OS
11 File Name1 OS1
12 Fi leNa me2 OS2
13 FileName 3 OS3
id
フィールドを使用して必要なコマンドを実行することしかできませんが、フィールドを使用して、コマンドが実行されている File Info
実際のことをユーザーに通知したいと考えています。File