我想分割一個文件中的字符串基於一些分隔符。但我無法實現它正確...這是我的代碼如下。將字符串拆分爲awk中的反斜槓(「」)分隔符?
awk 'var=split($2,arr,'\'); {print $var}' file1.dat
這是我的樣本數據傢伙。
Col1 Col2
abc 123\abc
abcd 123\abcd
慾望輸出:
Col1 Col2
abc abc
abcd abcd
我想分割一個文件中的字符串基於一些分隔符。但我無法實現它正確...這是我的代碼如下。將字符串拆分爲awk中的反斜槓(「」)分隔符?
awk 'var=split($2,arr,'\'); {print $var}' file1.dat
這是我的樣本數據傢伙。
Col1 Col2
abc 123\abc
abcd 123\abcd
慾望輸出:
Col1 Col2
abc abc
abcd abcd
樣本數據和輸出是我最好的猜測在您的要求
echo '1:2\\a\\b:3' | awk -F: '{
n=split($2,arr,"\\")
# print "#dbg:n=" n
var=arr[3]
print var
}'
輸出
b
建議所有split
返回它發現分割的字段數。您可以取消註釋調試行,您將看到返回值3。
還要注意,對於我的測試,我必須使用2'\'字符1來處理。我不認爲你需要在一個文件中,但如果這不適用於一個文件,然後嘗試根據需要添加額外的'\'到您的數據。我嘗試了一些關於如何使用'\'的變體,這似乎是最直接的。其他人歡迎發表評論!
我希望這會有所幫助。
是的,即使awk腳本是在單獨的文件中提供的,而不是提供的,您仍然需要轉義'\'在命令行上。 – dubiousjim 2012-04-19 12:46:57
您不需要調用拆分。只要使用\\
作爲字段分隔符:
echo 'a\b\c\d' | awk -F\\ '{printf("%s,%s,%s,%s\n", $1, $2, $3, $4)}'
OUTPUT:
a,b,c,d
由於部分提到的意見,你有嵌套單引號。切換一組使用雙引號應該修復它。
awk 'var=split($2,arr,"\"); {print $var}' file1.dat
我寧願管道到另一個awk命令使用split.I不知道,一個比其他更好的,它只是一個偏好。
awk '{print $2}' file1.dat | awk -F'\' '{...}'
您需要轉義您要分割的反斜槓。你可以用split
這樣的雙引號來做到這一點:"\\"
另外,你可以採用數組切片來使你的代碼更具可讀性(並避免定義另一個var)。這應該爲你工作:
awk 'NR==1 { print } NR>=2 { split($0,array,"\\"); print $1,array[2] }' file1.dat
HTH
awk '{sub(/123\\/,"")}1' file
Col1 Col2
abc abc
abcd abcd
你的報價被打破,在彩色高亮密切關注。 – 2012-04-12 20:06:57
仍然無法找到它... – Teja 2012-04-12 20:14:01
您不能在單引號內嵌套單引號。 – 2012-04-12 20:17:13