[英]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.