我有一个从文件中提取单词的命令。
我想使用它提取的单词重命名该文件。
我用来提取单词的命令,稍后我将使用它来重命名文件名.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
and很少是一个好主意,因为can do everything可以:awk
awk
grep
awk '/(some|other) words/ {print $1}' filename.txt | xargs -I{} mv filename.txt {}.txt