你的命令寫AWK的輸出命令到一個文件名爲「一個」中的「TMP」文件夾(這個文件夾是隱藏的),所以do shell script
的輸出爲「」
您的命令編輯第一個字段的內容等於「第2行」的行。
標準awk on OS X無法編輯文件的地方,所以你必須寫輸出到一個臨時文件,並使用mv
命令覆蓋原來的文件,但它與GNU AWK 4.1.0 ...可能 - >gawk -i inplace
編輯一些文件的第二行(CSV文件結束行必須是一個換行符),使用此:
set theFile to quoted form of POSIX path of (choose file)
set tempFile to theFile & ".tmp123"
do shell script "awk -F, 'NR==2{$22=\"hello\";}1' OFS=, " & theFile & " >" & tempFile & "&& mv -f " & tempFile & " " & theFile
如果CSV文件結尾行是一個回車,使用這個:
do shell script "awk -F, 'NR==2{$22=\"hello\";}1' RS='\\r' ORS='\\r' OFS=, " & theFile & " >" & tempFile & "&& mv -f " & tempFile & " " & theFile
更新
下面是一個例子如何把一個AppleScript變量(米)到命令。
set m to 6 -- a number
do shell script "awk -F, 'NR<" & m & "{$22=\"hello\";}1' RS='\\r' ORS='\\r' OFS=, " & theFile & " >" & tempFile & "&& mv -f " & tempFile & " " & theFile
什麼是期望的行爲和發生了什麼問題? –
我只想寫一個特定的行/列(在這種情況下,第2行,第22列)選定的CSV。目前它不會拋出任何錯誤,但不會寫入選定的CSV文件,顯示輸出「」 – Will
請編輯問題以包含此內容。謝謝! –