第5列和第17列中的字段合併在一起,我想拆分合並的字段並將其放入單獨的字段中。 我的數據是這樣的我想分裂由tab使用awk窗口分隔合併的字段?
326502010-12-10 320100807
368902010-12-14 420100716
,但我想看到這樣
32650 2010-12-10 3 20100807
36890 2010-12-14 4 20100716
第5列和第17列中的字段合併在一起,我想拆分合並的字段並將其放入單獨的字段中。 我的數據是這樣的我想分裂由tab使用awk窗口分隔合併的字段?
326502010-12-10 320100807
368902010-12-14 420100716
,但我想看到這樣
32650 2010-12-10 3 20100807
36890 2010-12-14 4 20100716
您還可以使用cut
此:
$ cut --output-delimiter=$'\t' -c 1-5,6-17,18- file
32650 2010-12-10 3 20100807
36890 2010-12-14 4 20100716
隨着-c
選項中可以設置表示要剪線的部分名單。逗號,
被設置爲選項卡的--output-delimiter
替代。
使用awk
,
$ awk -vOFS="\t" '{sub(/.{5}/, "&\t", $1); sub(/./, "&\t", $2)}1' file
32650 2010-12-10 3 20100807
36890 2010-12-14 4 20100716
sub(/.{5}/, "&\t", $1)
替代前5個字符與本身隨後\t
上的第一個字段。
sub(/./, "&\t", $2)}
替代第二個字段。
1
這個結果總是爲真,awk
打印輸入行爲默認行爲。
它的工作原理。非常感謝你!! – Alula
@Alula歡迎您:) – nu11p01n73R
嗨腳本很好地工作,但對我的一些領域扭曲。如何在分割字段後避免扭曲的字段?是否有可能修復該領域?謝謝 – Alula
在前述情況下的日期數的長度變化,使用:
$ awk '{sub(/....-..-../,"\t&",$1); sub(/^./,"&\t",$2)} 1' file
32650 2010-12-10 3 20100807
36890 2010-12-14 4 20100716
sub
用製表(\t
)和匹配部分(&
),即取代的日期部分。日期。關於$2
與後者大致相同。
第5列和第17列?你可能意味着字符5和17. – fedorqui