Im對AWK來說是全新的。我試圖從一個製表符分隔的文件中的空格(從下面這個愚蠢的例子中的$ 1開始)中刪除所有內容,或者在第一個空格之前抓取所有內容並將其放入awk中的變量(相同)。所以例如我有線條狀awk模式:刪除空格後的所有內容(包括)在一個字段中
abc 0000 12sometext stuff
如何刪除' 0000'
(後在$ 1中第一個空間可以是任何長度,唯一的規則就是一切),並以$ 1最終被abc
。子類似的功能不在AWK中,但是我可以使用正則表達式嗎?
如果我需要將結果abc
分配給一個變量,使用函數split(在AWK中)的數組看起來並不理想,那麼沒有其他方法嗎?
awk -F'\t' '{n = split($1, array, " "); result = array[1]; print result}' file.txt
WRT'子樣功能在AWK' - 當然AWK有子()函數。獲取Arnold Robbins編寫的「有效的Awk編程」第4版。 –
我明白了!但我想要'awk -F'\ t''{name = gensub(/。+ /,「」,$ 1);打印名稱}'file.txt'我不認識這個函數有返回的值。 – user3375672
有十幾種不同的方式。假設$ 0'ABC 0000'那麼你可以做任何的:'VAR = SUBSTR($ 0,1,3)','VAR = SUBSTR($ 0.1,指數($ 0,」「)-1)','匹配($ 0,/ /){風險= SUBSTR($ 0,1,RSTART-1)}','VAR = gensub(/ * /, 「」,1,$ 0)','VAR = $ 0; sub(/。* /,「」,var)','split($ 0,t,/ /); var = t [1]'等等,等等...... –