awk 按列过滤行
awk filter rows by column
这是我的行。
2706 abc/efe/efefe/fefe 10143 fefef/dbddf/fvfvdf/vdfvdp 8927 fvdfv/fvdv/fvdfv/fvdfv 11546 fvsddfv/fdfvdv/fvddffv/fvddfv
预期输出
2706 abc/efe/efefe/fefe
10143 fefef/dbddf/fvfvdf/vdfvdp
8927 fvdfv/fvdv/fvdfv/fvdfv
.
.
.
.
11546 fvsddfv/fdfvdv/fvddffv/fvddfv
在每个数字序列后跟一串非数字字符后插入一个换行符:
sed 's/\([0-9]* [^0-9]*\) /\n/g' input
或用换行符替换非数字字符后的空格:
sed 's/\([^0-9]\) /\n/g' input
给出:
2706 abc/efe/efefe/fefe
10143 fefef/dbddf/fvfvdf/vdfvdp
8927 fvdfv/fvdv/fvdfv/fvdfv
11546 fvsddfv/fdfvdv/fvddffv/fvddfv
你可以使用 sed,
sed 's/[[:blank:]]\+\([0-9]\+\)/\n/g' file
通过grep,
grep -oP '\d+\s+\S+' file
如果你的行的格式是固定的,你可以试试这行:
cat file|xargs -n2
用你的例子测试:
kent$ cat f
2706 abc/efe/efefe/fefe 10143 fefef/dbddf/fvfvdf/vdfvdp 8927 fvdfv/fvdv/fvdfv/fvdfv 11546 fvsddfv/fdfvdv/fvddffv/fvddfv
kent$ cat f|xargs -n2
2706 abc/efe/efefe/fefe
10143 fefef/dbddf/fvfvdf/vdfvdp
8927 fvdfv/fvdv/fvdfv/fvdfv
11546 fvsddfv/fdfvdv/fvddffv/fvddfv
使用 GNU awk 进行多字符 RS:
$ awk -v RS='\s' '{ORS=(NR%2?" ":"\n")}1' file
2706 abc/efe/efefe/fefe
10143 fefef/dbddf/fvfvdf/vdfvdp
8927 fvdfv/fvdv/fvdfv/fvdfv
11546 fvsddfv/fdfvdv/fvddffv/fvddfv
一些(大多数?)seds:
$ sed -r 's/([^ ]+ +[^ ]+) +/\n/g' file
2706 abc/efe/efefe/fefe
10143 fefef/dbddf/fvfvdf/vdfvdp
8927 fvdfv/fvdv/fvdfv/fvdfv
11546 fvsddfv/fdfvdv/fvddffv/fvddfv
这是我的行。
2706 abc/efe/efefe/fefe 10143 fefef/dbddf/fvfvdf/vdfvdp 8927 fvdfv/fvdv/fvdfv/fvdfv 11546 fvsddfv/fdfvdv/fvddffv/fvddfv
预期输出
2706 abc/efe/efefe/fefe
10143 fefef/dbddf/fvfvdf/vdfvdp
8927 fvdfv/fvdv/fvdfv/fvdfv
.
.
.
.
11546 fvsddfv/fdfvdv/fvddffv/fvddfv
在每个数字序列后跟一串非数字字符后插入一个换行符:
sed 's/\([0-9]* [^0-9]*\) /\n/g' input
或用换行符替换非数字字符后的空格:
sed 's/\([^0-9]\) /\n/g' input
给出:
2706 abc/efe/efefe/fefe
10143 fefef/dbddf/fvfvdf/vdfvdp
8927 fvdfv/fvdv/fvdfv/fvdfv
11546 fvsddfv/fdfvdv/fvddffv/fvddfv
你可以使用 sed,
sed 's/[[:blank:]]\+\([0-9]\+\)/\n/g' file
通过grep,
grep -oP '\d+\s+\S+' file
如果你的行的格式是固定的,你可以试试这行:
cat file|xargs -n2
用你的例子测试:
kent$ cat f
2706 abc/efe/efefe/fefe 10143 fefef/dbddf/fvfvdf/vdfvdp 8927 fvdfv/fvdv/fvdfv/fvdfv 11546 fvsddfv/fdfvdv/fvddffv/fvddfv
kent$ cat f|xargs -n2
2706 abc/efe/efefe/fefe
10143 fefef/dbddf/fvfvdf/vdfvdp
8927 fvdfv/fvdv/fvdfv/fvdfv
11546 fvsddfv/fdfvdv/fvddffv/fvddfv
使用 GNU awk 进行多字符 RS:
$ awk -v RS='\s' '{ORS=(NR%2?" ":"\n")}1' file
2706 abc/efe/efefe/fefe
10143 fefef/dbddf/fvfvdf/vdfvdp
8927 fvdfv/fvdv/fvdfv/fvdfv
11546 fvsddfv/fdfvdv/fvddffv/fvddfv
一些(大多数?)seds:
$ sed -r 's/([^ ]+ +[^ ]+) +/\n/g' file
2706 abc/efe/efefe/fefe
10143 fefef/dbddf/fvfvdf/vdfvdp
8927 fvdfv/fvdv/fvdfv/fvdfv
11546 fvsddfv/fdfvdv/fvddffv/fvddfv