簡體   English   中英

awk / bash引用:在回顯中打印\\

[英]awk/bash quoting: print \ in echo

我們需要打印出來

targetID =“ 123”

AssayID =“ 456”,

awk -F\", 'BEGIN{FS=",";OFS=",";} {print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$13,$14,$15,$16,$17,$18,$19,$20,$12}' VrtAssay_123_target_456_assay_Detail2.csv > VrtAssay_123_target_456_assay_Detail2_reorder.csv

答:我們嘗試:

printf "awk -F"\""," 'BEGIN{FS=\",\";OFS=\",\";} {print \$1,\$2,\$3,\$4,\$5,\$6,\$7,\$8,\$9,\$10,\$11,\$20,\$12,\$13,\$14,\$15,\$16,\$17,\$18,\$19}' VrtAssay_${TargetIDs}_target_${AssayID}_assay_Detail2_average.csv > VrtAssay_${TargetIDs}_target_${AssayID}_assay_Detail3.csv"

B.或回聲

echo "awk -F"\"", 'BEGIN{FS=\",\";OFS=\",\";} {print \$1,\$2,\$3,\$4,\$5,\$6,\$7,\$8,\$9,\$10,\$11,\$20,\$12,\$13,\$14,\$15,\$16,\$17,\$18,\$19}' VrtAssay_${TargetIDs}_target_${AssayID}_assay_Detail2_average.csv > VrtAssay_${TargetIDs}_target_${AssayID}_assay_Detail3.csv"

都給(\\走了)

awk -F", 'BEGIN{FS=",";OFS=",";} {print $1,$2,$3,$4,$5,$6,$7,$8,$9,$10,$11,$13,$14,$15,$16,$17,$18,$19,$20,$12}' VrtAssay_123_target_456_assay_Detail2.csv > VrtAssay_123_target_456_assay_Detail2_reorder.csv

C.如果我們嘗試

printf "awk -F\\", 'BEGIN{FS=\",\";OFS=\",\";} {print \$1,\$2,\$3,\$4,\$5,\$6,\$7,\$8,\$9,\$10,\$11,\$20,\$12,\$13,\$14,\$15,\$16,\$17,\$18,\$19}' VrtAssay_${TargetIDs}_target_${AssayID}_assay_Detail2_average.csv > VrtAssay_${TargetIDs}_target_${AssayID}_assay_Detail3.csv" 

這些將給出錯誤消息

Unmatched ".

D.如果我們嘗試

echo "awk -F\\", 'BEGIN{FS=\",\";OFS=\",\";} {print \$1,\$2,\$3,\$4,\$5,\$6,\$7,\$8,\$9,\$10,\$11,\$20,\$12,\$13,\$14,\$15,\$16,\$17,\$18,\$19}' VrtAssay_${TargetIDs}_target_${AssayID}_assay_Detail2_average.csv > VrtAssay_${TargetIDs}_target_${AssayID}_assay_Detail3.csv"

這給了我們

Unmatched ".

想知道任何一位上師可以提供一些解決方案嗎?

這些工作中的任何一項,您只需要確保所有內容均已正確轉義即可:

 $ echo 'awk -F\",'
 $ echo awk -F\\\",
 $ echo "awk -F\\\","

Shell的解析規則基本上是:

  • 'single quotes' ,除單引號外的所有內容均按字面意義進行解釋; 要包括文字單引號,您需要先關閉單引號,然后使用雙引號將其括起來。
  • "double quotes" ,雙引號和反斜杠必須以反斜杠轉義。 因此,文字雙引號是\\" ,文字反斜杠是\\\\ ,文字反斜杠和雙引號是\\\\\\" 如果您只寫\\\\" ,那是一個文字反斜杠,后跟一個引號。

使用單引號而不是雙引號,例如:

echo 'awk -F\",'

試試看,

echo 'awk -F\",'

如果將輸入括在單引號中,它將按原樣打印。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM