我有一个包含每行大量数据的记录的文件。 例如:
:~$ cat filename
record_1 data_a data_b data_c data_d data_e 123
record_2 data_a data_b data_c data_d data_e 456
record_3 data_a data_b data_c data_d data_e 789
我想使用N
和N
查看文件中每行数据的前sed
个字符和最后grep
个字符中的信息特定记录例如
:~$ grep 'record_1' filename | [some sed command here]
record_1 123
我可以使用sed
命令还是有其他方法来获得这种结果?非常感谢任何帮助。
答案 0 :(得分:2)
使用sed
即可:
sed -rn '/record_1/s/(.{8}).*(.{3})$/\1 \2/p' file
record_1 123
如果您想阅读第一个和最后一个字段,请使用:
awk '/record_1/{print $1, $NF}' file
record_1 123
答案 1 :(得分:0)
awk可能会更好,特别是如果所有记录的长度都相同,就像问题中所示。
awk '{print $1 $n}' filename
其中n是最后一个字段的编号。 $ 7包含123,$ 6包含data_e,依此类推。
答案 2 :(得分:0)
如果你想根据给定的尺寸提取字符,这是另一种选择
$ s=8;e=3; paste <(cut -c1-$s file) <(rev file | cut -c1-$e | rev)
record_1 123
record_2 456
record_3 789
指定从s(tart)到e(nd)的大小。