File 如何阅读具体的行和具体的位置?

File 如何阅读具体的行和具体的位置?,file,bash,shell,unix,solaris,File,Bash,Shell,Unix,Solaris,我在读取特定行和特定位置的字符串时遇到问题。我有一个输入文件,每行中的每个值都有一个固定位置和固定长度。这是我的输入文件的一个示例: sltele Hoodie 24051988 d12Hdq sltele Hoodie 07051987 d30Hdq sltele Hoodie 07082011 d08Hdq sltele Hoodie 09081961 d04Hdq sltele Hoodie 20041962 d14Hdq slt

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

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
我需要读取第一行第三列中的字符串。所以,我用了这个

awk 'NR==1 {print $2, $3}' inputfile.inp

如何使用字符位置作为参数得到精确的结果?(12日至18日和21日至28日)

使用
cut-c

查看手册页了解更多详细信息

您还可以使用以下选项:

echo "abcdefghij" | awk '{print substr($0,2,2),substr($0,6,2)}'
bc fg
上面是第二位的2个字符和第六位的2个字符

您的解决方案将是:

awk 'NR==1 {print substr($0,12,6),substr($0,21,7)}' inputfile.inp
上述命令将从第1行的第12个位置获取6个字符,从第21个位置获取7个字符。

您也可以使用sed:

说明:

  • -n不要打印行
  • s更换
  • 1仅第一行
  • {11}省略11个字符
  • (.{7})保存7个字符(字符12-18)
  • {2}省略2个字符(19-20)
  • (.{8})保存8个字符(21-28)
  • \1\2用第一次和第二次保存替换字符串
  • p打印指定行的行
谢谢你,彼得:)这就是我想要的解决方案。再次感谢:)
sed -rn "1 s@.{11}(.{7}).{2}(.{8})@\1\2@p" filename