繁体   English   中英

将awk变量传递给bash脚本

[英]passing awk variable to bash script

我正在编写一个bash / awk脚本来处理一个目录下的数百个文件。 它们都具有“ localprefs”的名称后缀。 目的是从每个文件中提取两个值(它们用“”引用)。 我也想使用相同的文件名,但没有名称后缀。

这是我到目前为止所做的:

#!/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'{print substr(FILENAME,1,length(FILENAME)-10)}'来提取不带后缀的文件名,但是我一直坚持如何将其作为变量传递给bash,我将其用作输出文件名(我在这里阅读了有关该主题的所有帖子,但也许我很傻(它们对我来说都不起作用)。

如果任何人都可以对此有所了解,特别是该行以“ read”开头,那么您将不胜感激。

非常感谢。

试试这个:

#!/bin/bash

dir="/path/to/directory"

for file in "$dir"/*localprefs; do
    name=${file%localprefs}  ## Or if it has a .: name=${file%.localprefs}
    name=${name##*/}  ## To exclude the dir part.
    echo "$name"
    awk 'BEGIN { FS = "\""} {print $2}' "$file"  ## I think you could also use cut: cut -f 2 -d '"' "$file"
done

exit 0

仅使用sbase名称,甚至不需要awk:

for file in * ; do
   name="${file%.*}"
   etc
done

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM