可以split(string, array, separator)
awk使用空格序列作爲分隔符(或更一般地說任何正則表達式作爲分隔符)?awk按空白序列分割
顯然,人們可以使用內部自動分割(在輸入的每一行上運行,值爲FS
變量作爲分隔符),並使用簡單的for
和$0
魔術。不過,我只是想知道是否有更簡單的方法使用split
本身。
可以split(string, array, separator)
awk使用空格序列作爲分隔符(或更一般地說任何正則表達式作爲分隔符)?awk按空白序列分割
顯然,人們可以使用內部自動分割(在輸入的每一行上運行,值爲FS
變量作爲分隔符),並使用簡單的for
和$0
魔術。不過,我只是想知道是否有更簡單的方法使用split
本身。
split(string, array, fieldsep)
這就將字符串轉換成由fieldsep分離件,並且存儲在數組中的 件。第一部分存儲在數組[1]中,第二部分 存儲在數組[2]中,等等。第三個參數的字符串值,fieldsep,是一個正則表達式,描述了拆分字符串的位置(很多 ,因爲FS可以是描述拆分輸入記錄的位置的正則表達式)。如果 省略了fieldsep,則使用FS的值。分割返回創建的元素數 。分割功能,那麼,分割字符串 成碎片的方式類似於輸入線被分成 字段
下面是一個使用一個簡單的正則表達式短(有點傻)示例的方式".s "
那將匹配任何單個字符,後跟一個小寫s
和一個空格。分割的結果被放入數組a
。請注意,匹配的部分是而不是放置在陣列中。
BEGIN {
s = "this isn't a string yes isodore?"
count = split(s, a, ".s ")
printf("number of splits: %d\n", count)
print "Contents of array:"
for (i = 1; i <= count; i++)
printf "a[%d]: %s\n", i, a[i]
}
輸出:
$ awk -f so.awk
number of splits: 3
Contents of array:
a[1]: th
a[2]: isn't a string y
a[3]: isodore?
的製品Advanced Awk for Sysadmins顯示解析使用split()
的線的例子。該page包含使用正則表達式將數據拆分爲數組的示例。
從GNU AWK(1)手冊頁:
split(s, a [, r])
拆分字符串s插入正則表達式r處的陣列的,並返回字段的數量。如果r省略,則使用FS。
這裏的重點是,你可以使用任何正則表達式來執行字段拆分 - 至少你可以用gawk。如果你使用其他的東西,你需要檢查你的文檔。
'man'頁面的GNU擴展部分僅引用空字符串來分割單個字符。通常使用正則表達式'FS'和'split()'不是擴展名。 –
你能告訴我們你要完成什麼任務,並提供一些輸入/輸出樣本。可能會有拆分的替代方案。 – Levon