やあ、
過去数日間、stackoverflow (素晴らしいリソース!) で多くの検索を行ったおかげで、これに成功し、次の問題にも成功しました。これは、コマンドを実行するたびに出力が 2 倍になるという結果でした。二重線を削除できた awk コマンドのおかげです。検索はかなり進んでいますが、1 つのオプションがありません。ちなみにMacosXとLinuxの両方を使用しています。
私がやろうとしているのは、メモ(すべてプレーン テキストの .md ファイル)を解析し、テキスト ファイル(greplist.txt と呼ばれる)で単語/タグを検索し、同じ名前の別のテキスト ファイルで一致する行を解析することです。検索ワード/タグ(例: @computer.md) .
greplist.txtの内容の選択は次のとおりです。
@home
@computer
@Next
@Waiting
2 つの .md ファイルの内容の例:
学校.md:
* find lost schoolbooks @home
* do homework @computer
楽しい.md
* play videogame @computer
この端末コマンドを使用すると(うまく機能しますが、まだ完全ではありません)
$ cat greplist.txt | while read line; do grep -h "$line" *.md >> $line.md.tmp; mv $line.md.tmp $line.md; awk '!x[$0]++' < $line.md > $line.md.tmp && mv $line.md.tmp $line.md ;done
結果
@computer.mdの結果:
* do homework @computer
* play videogame @computer
@home.mdは次のようになります。
* find lost schoolbooks @home
これまでのところとても素晴らしいです!もうこれで本当に幸せです。特に、ファイルの移動/名前変更が追加されたため、@ tag .md ファイルに追加のタスク/行を追加し、次にコマンドを実行したときに上書きされることなくファイルに含めることもできます。素晴らしいケーキ!
今私が見逃している唯一のことは、タスクの背後にある@ tag .mdファイルの出力でも、出力が検索結果の後ろの括弧の間にファイル名(拡張子なし)をリストすることを望むことです(nvaltがこれを次のように使用できるように)内部リンク)
したがって、例@computer.mdの望ましい出力は次のようになります。
* do homework @computer [[school]]
* play videogame @computer [[fun]]
-h の代わりに grep コマンドで -l と -H を使用してこれをいじってみましたが、出力がどうにか乱雑になります。(まだブラケットを追加しようとさえしていません!)
私が試した別のこれはこれでしたが、継ぎ目は何もしません。ただし、おそらく私が達成しようとしていることを示しています。
$ cat greplist.txt | while read line; do grep -h "$line" *.md | while read filename; do echo "$filename" >> $line.md.tmp; mv $line.md.tmp $line.md; awk '!x[$0]++' < $line.md > $line.md.tmp && mv $line.md.tmp $line.md ;done
したがって、ジンバブエ 100 万ドルの問題は次のとおりです。これをどのように行うか。試してみましたが、これは私のスキルレベル atm を超えています。解決策を見つけることに非常に熱心です!
前もって感謝します。
ダニエル・デニス・デ・ウィット