首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何读取特定行和特定位置?

如何读取特定行和特定位置?
EN

Stack Overflow用户
提问于 2012-07-23 14:57:03
回答 2查看 10.9K关注 0票数 2

我在读取特定行和特定位置的字符串时遇到问题。我有一个输入文件,它对每行中的每个值都有固定的位置和固定的长度。这是我的输入文件的一个示例:

代码语言:javascript
复制
sltele     Hoodie   24051988 d12Hdq
sltele     Hoodie   07051987 d30Hdq
sltele     Hoodie   07082011 d08Hdq
sltele     Hoodie   09081961 d04Hdq
sltele     Hoodie   20041962 d14Hdq
sltele     Hoodie   20032000 d01Hdq
sltele     Hoodie   13062002 d05Hdq

我需要读取第一行的第三列中的字符串。所以,我用了这个

代码语言:javascript
复制
awk 'NR==1 {print $2, $3}' inputfile.inp

如何以字符位置作为参数得到准确的结果?(12-18和21-28)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-23 15:00:05

使用cut -c

有关更多详细信息,请查看手册页。

此外,您还可以使用以下代码:

代码语言:javascript
复制
echo "abcdefghij" | awk '{print substr($0,2,2),substr($0,6,2)}'
bc fg

上面是来自第二个位置的两个字符和来自第六个位置的两个字符。

您的解决方案是:

代码语言:javascript
复制
awk 'NR==1 {print substr($0,12,6),substr($0,21,7)}' inputfile.inp

上面的命令将从第1行的第12个位置获取6个字符,从第21个位置获取7个字符。

票数 5
EN

Stack Overflow用户

发布于 2012-07-23 16:33:24

您也可以使用sed:

代码语言:javascript
复制
sed -rn "1 s@.{11}(.{7}).{2}(.{8})@\1\2@p" filename

解释:

  • -n不打印lines
  • s replace
  • 1,只打印第一个line
  • .{11},省略11个characters
  • (.{7}),节省7个字符(char 12-18)
  • .{2}省略2个字符,(19-20)
  • (.{8})节省8个字符(21-28)
  • \1\2将字符串替换为第一行和第二行saves
  • p打印指定行
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11607757

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档