我在写一个bash/awk脚本来处理一个目录下的数百个文件。他们都有“本地偏好”的名称后缀。目的是从每个文件中提取两个值(它们由“”引用)。我也想使用相同的文件名,但没有名称后缀。将awk变量传递给bash脚本
这里是我做过什么至今:
#!/bin/bash
for file in * # Traverse all the files in current directory.
read -r name < <(awk ' $name=substr(FILENAME,1,length(FILENAME)-10a) END {print name}' $file) #get the file name without suffix and pass to bash. PROBLEM TO SOLVE!
echo $name # verify if passing works.
do
awk 'BEGIN { FS = "\""} {print $2}' $file #this one works fine to extract two values I want.
done
exit 0
我可以用
的awk '{打印SUBSTR(文件名,1,长度(文件名)-10)}' 提取文件名没有后缀,但我坚持如何将bash作为一个变量传递给我将用作输出文件名(我在这里阅读了关于这个主题的所有帖子,但也许我是哑巴,但没有一个适用于我)。
如果任何人都可以对此有所了解,特别是以“阅读”开头的行,你真的很感激。
非常感谢。
它的作品像魅力。非常感谢!我将用你的模板来表示输出。 – user46292
#!/ bin/bash dir =“/ path/to/dir” diro =“/ path/to/dirout” for“$ dir”/ * localprefs;做 name = $ {file%localprefs} ##或者如果它有一个。:name = $ {file%.localprefs} name = $ {name ## * /}; ##排除目录部分。 触摸 “$ DIRO”/ “$名” 的awk 'BEGIN {FS = “\”“} {打印$ 2}' ”$文件“ >> ”$ DIRO“/ ”$名“ 做 退出0 – user46292
如何编写for循环来获取名称并创建文件,然后运行awk部分将两行代码放入文件中?请参阅上文。它非常接近,但在输出文件中有两个副本 – user46292