ファイルから単語を抽出するコマンドがあります。
抽出した単語を使ってファイル名を変更したい。
後で名前を変更するために使用する単語を抽出するために使用したコマンドファイル名.txt、次のように:
$ grep -e "some words" -e "other words" filename.txt | awk '{print $1}'
ファイル名.txtコンテンツの例:
dasdadas
asdasda
asdas
matched some words
asdas
asda
予想される結果:ファイル名.txt名前が変更されますmatch.txt。
1行のコマンドでこれを行うことができたらと思います。
これはうまくいきませんが、次のような場合もあります。
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
単一のパイプで and を使用することは、grep
すべての操作を実行できるため、良い考えではありません。awk
awk
grep
awk '/(some|other) words/ {print $1}' filename.txt | xargs -I{} mv filename.txt {}.txt