2013-07-23 33 views
0

我沒有使用手冊,但我無法一起獲得所有的選項,以瞭解上述代碼實際上在做什麼。有人可以請解釋下面的代碼和以下查詢

awk -v v='"' 'BEGIN{FS=OFS=v}{gsub(",","",$2);print }' \ 
    ${SOURCE_LOCATION}/TEMP1_$file_name>${SOURCE_FILE_LOCATION}/TEMP2_$file_name 

什麼時候我們必須在'$'之後的代碼中使用大括號,何時不使用。請解釋。任何幫助真的很感激。

+0

這個問題真的應該是兩個不同的問題。 – Joni

回答

2

該命令將刪除第二個字段中的所有逗號。字段分隔符是引號字符"(由FS指定)。

例如,以下字符串:

something "string, with, commas" something "else, here, and more" 

將被轉換成:

something "string with commas" something "else, here, and more" 

{}變量名中的重要性已經被@Joni很好的解釋。

輸入從文件${SOURCE_LOCATION}/TEMP1_$file_name中讀取,輸出重定向到${SOURCE_LOCATION}/TEMP2_$file_name

+0

有沒有辦法檢查文件所有列的相同條件,並用雙引號括起來的逗號替換空的空格?非常感謝你對此的幫助 – Dhruuv

1

當變量名後面跟着一些不是變量名的一部分但可能與它混淆的東西時,必須使用大括號語法。例如,比較

hello="Hello" 
echo $hello_world 

hello="Hello" 
echo ${hello}_world 

第一個輸出一個空行(或殼可變hello_world的值,如果它存在),而第二個輸出Hello_world

在你的情況下,它們不是必須的,因爲斜線永遠不能成爲變量名的一部分。有些人更喜歡使用方括號來清楚說明變量的起始位置和結束位置,即使它們不是必需的。