複数のディレクトリにある特定のファイルを検索し、必要な情報を出力する独自のAWKを持つ2つの異なる機能があります。どちらの関数もFILENAMEと私が必要とする特定のフィールドを印刷し、単独でうまく動作します。私はより強固な出力のために一緒にそれらを結合したい。複数のawk出力を1行にまとめる
私はプログラマーではありません。私が行ったときにawkについて読んでいる間、これらを書きました。
機能1
cver() {
X=""
case $1 in
("-b") X="bb";;
("-c") X="cpe";;
("-e") X="etech";;
("-k") X="core";;
("-o") X="ohgov";;
("-h"|help) echo "'cver' allows us to see the software version
running on all Company Juniper devices.\n'cver' is especially helpful
in determining which devices require a software upgrade.\n\nOptions
are -b for bb, -c for cpe, -e for etech, -k for core, and -o for
ohgov.\n\nUse grep to find specific information. Ex: cver -c | grep
name";;
(*) echo "Unrecognized or incomplete command.\nUse -h for help.";;
esac
[ $X ] && awk -vSRCH="$3" '/JUNOS/ && /boot/ && $5 ~ "^[[]" SRCH
{sub ("/show.version", "", FILENAME); sub (".*/", "", FILENAME);
print $5 " " FILENAME}' ~/svn/nw_config_data/*${X}.domain.net/show.version | sort
}
入力/出力例:
% cver -k <---input
[11.4R10.3] device.core.domain.net <---ouput
機能2
cmod() {
X=""
case $1 in
("-b") X="bb";;
("-c") X="cpe";;
("-e") X="etech";;
("-k") X="core";;
("-o") X="ohgov";;
esac
awk '/Model/ {sub ("/show.version", "", FILENAME);
sub (".*/", "", FILENAME); print FILENAME " " $2}'
~/svn/nw_config_data/*${X}.domain.net/show.version | sort
}
入力/出力例:
% cmod -k <---input
device.core.domain.net mx480 <---output
〜/ svn/nw_config_data /ディレクトリにこれらのスクリプトが行っているものがあり、そこにはデプロイしたすべてのデバイスのディレクトリが保存されています。各デバイスディレクトリ内には、config用のファイルといくつかのshowコマンドがあります。私が心配しているファイルは、show.versionファイルと数行の情報です。 "cver"については、JUNOSベースのOSブート情報が必要です。 "cmod"では、私はModelの情報を求めています。 "X"は、-b = "bb"(device.bb.domain.net)のような異なるデバイスオプションを取得します。
以下はshow.versionファイルの例です。
Hostname: device-r0
Model: ex3300-24t
JUNOS Base OS boot [12.3R7.7]
JUNOS Base OS Software Suite [12.3R7.7]
JUNOS Kernel Software Suite [12.3R7.7]
JUNOS Crypto Software Suite [12.3R7.7]
JUNOS Online Documentation [12.3R7.7]
JUNOS Enterprise Software Suite [12.3R7.7]
JUNOS Packet Forwarding Engine Enterprise Software Suite [12.3R7.7]
JUNOS Routing Software Suite [12.3R7.7]
JUNOS Web Management [12.3R7.7]
JUNOS FIPS mode utilities [12.3R7.7]
私は、これらの最後のカップルの日に、類似していて短くなるような例を探してみました。パイプをawkと言った答えが1つ見えましたが、2番目のawk情報しか表示しません。
私は、それをパイピングする代わりにawkを試してみました。それは私に近づきましたが、最初のawkと別のawkを別々の行に出力して、それらを組み合わせたものです。
& &例:
cver() {
X=""
case $1 in
("-b") X="bb";;
("-c") X="cpe";;
("-e") X="etech";;
("-k") X="core";;
("-o") X="ohgov";;
("-h"|help) echo "'cver' allows us to see the software version
running on all Company Juniper devices.\n'cver' is especially helpful
in determining which devices require a software upgrade.\n\nOptions
are -b for bb, -c for cpe, -e for etech, -k for core, and -o for
ohgov.\n\nUse grep to find specific information. Ex: cver -c | grep
name";;
(*) echo "Unrecognized or incomplete command.\nUse -h for help.";;
esac
[ $X ] && awk -vSRCH="$3" '/JUNOS/ && /boot/ && $5 ~ "^[[]" SRCH
{sub ("/show.version", "", FILENAME); sub (".*/", "", FILENAME);
print $5 " " FILENAME}' ~/svn/nw_config_data/*${X}.domain.net/show.version
| sort && awk '/Model/ {sub ("/show.version", "", FILENAME);
sub (".*/", "", FILENAME); print $2}'
~/svn/nw_config_data/*${X}.domain.net/show.version | sort
入力/出力の例:私は入力/出力になりたい
% cver -k <---input
[11.4R10.3] device.core.domain.net <---output
mx480 <---output
:私はの印刷部分を想像
% cver -k <---input
device.core.domain.net mx480 [11.4R10.3] <---output
コマンドは
のように見えるprint FILENAME " " $2 " " $5
また、私は私の最初の関数に& &/$ 2の追加/モデルを試してみたが、それは私に任意の出力を与えるものではありませんし、私はちょうどこの時点で迷ってしまいました。
例:
cver() {
X=""
case $1 in
("-b") X="bb";;
("-c") X="cpe";;
("-e") X="etech";;
("-k") X="core";;
("-o") X="ohgov";;
("-h"|help) echo "'cver' allows us to see the software version
running on all Company Juniper devices.\n'cver' is especially helpful
in determining which devices require a software upgrade.\n\nOptions
are -b for bb, -c for cpe, -e for etech, -k for core, and -o for
ohgov.\n\nUse grep to find specific information. Ex: cver -c | grep
name";;
(*) echo "Unrecognized or incomplete command.\nUse -h for help.";;
esac
[ $X ] && awk -vSRCH="$3" '/JUNOS/ && /boot/ && $5 && /Model/ && $2 ~ "^[[]" SRCH
{sub ("/show.version", "", FILENAME); sub (".*/", "", FILENAME);
print FILENAME " " $2 " " $5}' ~/svn/nw_config_data/*${X}.domain.net/show.version | sort
入力データの適切なサンプルを表示した場合は、回答を得る可能性が高いと思われます。抽出するのがどの側面であるかを個別に確認してください。 –
質問を編集して詳細を表示します。ありがとうございました。 – rewalker3
編集が完了しました。うまくいけば助けてくれます。 – rewalker3