2014-12-01 75 views
1

如何使用如下的awk從文件的輸出添加:如何添加「「」的命令AWK

像:

cat /tmp/lista_table_vertical.txt | awk '{print "major_compact " $1}' 
major_compact game_activities 
major_compact interatividade_activities 
major_compact testeCompression 
major_compact testeCompression2 
major_compact testeSlowQuery 
major_compact users_algorithms 
major_compact users_algorithms2 

我想插入「」」的開始,最後。 例如:

major_compact 'game_activities' 
major_compact 'interatividade_activities' 
major_compact 'testeCompression' 
major_compact 'testeCompression2' 
major_compact 'testeSlowQuery' 
major_compact 'users_algorithms' 
major_compact 'users_algorithms2' 

謝謝。

回答

5

一種解決方案是使用ASCII表示:

\047 

檢查

man ascii 

最後:

awk '{print "major_compact \047" $1 "\047"}' /tmp/lista_table_vertical.txt 

另一個(也許很難記住&閱讀)解決方案:

awk 'BEGIN{print "major_compact '\''" $1 "'\''"}' /tmp/lista_table_vertical.txt 
2

您可以使用:

awk -v sq="'" '{print "major_compact " sq $1 sq}' /tmp/lista_table_vertical.txt 

即通過單引號作爲一個變量AWK,並用它使用變量名稱的任何地方。

PS:您也不需要使用不必要的cat

+1

對我來說,這比使用'\ 047'更好,因爲在這裏你不需要記住單引號的數字。 – Jotne 2014-12-01 22:03:05

+0

@Jotne - 不,'\ 047'更好,因爲您可以在任何需要單引號的地方使用它,例如裏面的正則表達式常量。你可以寫'/ \ 047foo \ 047 /',但是你不能寫'/ sqfoosq /',你也不能寫'$ 0〜sq「foo」sq',因爲那樣你需要額外處理''foo「 '作爲計算正則表達式而不是正則表達式常量(例如,需要雙重轉義元字符)。在某些情況下它會變得不必要的笨拙,所以最好總是使用'\ 047'。 – 2014-12-01 22:31:38

+2

@jotne:你也可以使用與'\ 047'同樣的按鍵次數的''''而不強迫你記住代碼。 – rici 2014-12-02 01:15:36

2

如果你打算做其再次,最簡單的做法是,如script.awk包含創建一個文件:

{ printf "major_compact '%s'\n", $1 } 

然後運行

awk -f script.awk /tmp/lista_table_vertical.txt 

這樣做可以避免所有在shell命令行上轉義引號的混亂。如果你只需輸入一次,其他答案中的其中一位將會爲你工作(但即使如此,這可能更容易第一次正確 - 如果你必須得到它是正確的,你必須以不止一次的形式或形式鍵入它)。