私は大きなテキストファイルセットからすべての個々のUnixコマンドを抽出したいと思います。
これが私が今まで持っているものです:
tx
この例では、コマンドのすべてのインスタンスを抽出します。その中にはテキスト文書がたくさん入っていて/PROJECT/DOCS
名前はすべてですwhatever.EXT
。
#!/bin/bash
rm -f ~/Documents/proc-search.txt
cd /PROJECT/DOCS
for file in *
do
echo "PROC Name: "$file >> ~/Documents/proc-search.txt
echo "Description:" >> ~/Documents/proc-search.txt
awk 'NR==1' $file >> ~/Documents/proc-search.txt
echo "UNIX Commands:" >> ~/Documents/proc-search.txt
awk '/tx/{print}' $file >> ~/Documents/proc-search.txt
echo "########################################" >> ~/Documents/proc-search.txt
done
tx
私はproc-search.txtを開き、実際にこのコマンドのすべてのインスタンスをキャプチャしたのでとても嬉しかったです。ただし、コマンドが含まれていないため、不要なファイルに関する情報も出力しますtx
。ACPFM.EXT
以下の例のように。除外する方法はありますか?フィールドファイルがありませんかtx
?
これが私が得た出力です。 proc-search.txtです。のレポートや.EXTコマンドをACPFM.EXT
使用しない他の項目を見たくないことを除いて、問題はありません。tx
PROC Name: 17.EXT
Description:
* NORMPARD (EDIT CONTRL FILE)
UNIX Commands:
# tx @CONTRL <- YAY! This is a result that I want.
########################################
PROC Name: ACPFM.EXT <- I don't want this stanza.
Description:
* ACPFM (Account PARameter File Maintenance)
UNIX Commands:
########################################
PROC Name: ACTDARA.EXT
Description:
*
UNIX Commands:
#tx @SEQFILE <- YAY! This is a result that I want.
########################################
PROC Name: ACTEDIT.EXT
Description:
*
UNIX Commands:
#tx @SEQFILE <- YAY! This is a result that I want.
########################################
ベストアンサー1
あなたの(要約された)ループ
for file in *
do
echo "PROC Name: "$file >> ~/Documents/proc-search.txt
awk '/tx/{print}' $file >> ~/Documents/proc-search.txt
done
"PROC Name: foo"
すべてのファイルに一致する行awk
のみを印刷しますtx
。
たぶんあなたが望むかもしれません(ディレクトリと一致するものがないと仮定*)
for file in $(grep -l tx *)
これにより、ループ内のすべてのファイルにtx
文字列が含まれます。