我在我的shell腳本中使用了下面的awk語句。awk意外改變文本
#!/bin/sh
# read file line by line
file="/pdump/country.000000.txt"
while read line
do
mycol=`echo $line | awk -F"," '{print $2}'`
mycol_new=`echo $mycol | tr "[:lower:]" [:upper:]`
echo $line | awk -v var="$mycol_new" -F"," '{print $1 "," var "," $3 "," $4 "," $5 "," $6 "," $7 "," $8}'
done < $file
它按預期工作。
唯一的問題是,如果原始文本是\ N(斜線N)在任何其他列中,例如, $ 4或$ 7,然後它變成N(沒有斜槓)。 如何保留原始值而僅替換第二列。
反斜槓的丟失必須發生在其他地方。如果'echo $ line'沒有'awk'命令,你會看到反斜線N嗎? – 2011-03-18 04:37:17
你是對的。即使我使用echo「$ line」,它也會顯示沒有\ N的行。我如何解決這個問題。我應該爲這個問題使用什麼標籤? – shantanuo 2011-03-18 04:44:02
http://stackoverflow.com/questions/5338225/replacing-second-column-using-shell-script#我正在使用while循環來讀取文件行 – shantanuo 2011-03-18 04:47:03