フィールドのパターンに基づいて列を分割

フィールドのパターンに基づいて列を分割

$2例:入力ファイルを分割してtabポストパターンを入れたいsurname

入力する:

name    surname1    
name    surname30000
name    surname456

希望の出力:

name    surname    1
name    surname    30000
name    surname    456

答え1

一つアッ選択する:

awk 'match($2,/[0-9]+$/) {printf("%s\t%s\t%s\n", $1, substr($2,0,RSTART), substr($2,RSTART,RLENGTH))}' filename

これは、2番目の列の末尾にある数値文字列とのみ一致します。

答え2

以下を使用して、最初の数字を見つけてタブと数字に置き換えることができます。

sed 's/[0-9]/\t&/' file

答え3

sed -e 's/\([0-9]\)/\t\1/' input.txt

各行の最初の数字の前にタブ文字を追加します。

出力:

name    surname 1    
name    surname 30000
name    surname 456

答え4

データは特定の場所にあります。、例えば16:

sed -e 's/^\(.\{15,15\}\)/\1 /'

あるいは、第3フィールドの関心データが数字ではない場合もある。

sed -e 's/^\([[:alpha:]]\+[[:space:]]\+\)\([[:alpha:]]\+\)/\1\2 /'

どちらもデータの数字(または他のアルファベットではない)文字の前にスペースを配置します。

参考までに:

関連情報