
ファイルから単語を抽出するコマンドがあります。
抽出した単語を使用してそのファイルの名前を変更したいと思います。
単語を抽出するために使用するコマンド。これは後で名前を変更するために使用します。ファイル名.txt、次のようになります。
$ grep -e "some words" -e "other words" filename.txt | awk '{print $1}'
ファイル名.txtコンテンツ例:
dasdadas
asdasda
asdas
matched some words
asdas
asda
期待される結果:ファイル名.txtに名前が変更されます一致した.txt。
これをワンライナーコマンドで実行できることを期待しています。
これは機能しませんが、おそらく次のようなものになります:
mv filename.txt $(grep -e "some words" -e "other words" filename.txt | awk '{print $1}').txt
Note: Im certain that there will only be one match with the
grep`。ありがとう。
答え1
#!/bin/bash
old_file_name=$1 # take an argument for the file you want to muck with
new_file_name=$(grep -e "some words" -e "other words" "${old_file_name}" | awk '{print $1}' | head -n 1).txt
mv "$old_file_name" "$new_file_name"
答え2
grep
およびをawk
単一のパイプラインで使用することは、awk
次のことができるすべてのことを実行するため、ほとんど良い考えではありませんgrep
。
awk '/(some|other) words/ {print $1}' filename.txt | xargs -I{} mv filename.txt {}.txt