2

特定の行と特定の位置の文字列を読み取る際に問題があります。すべての行の各値の固定位置と固定長を持つ入力ファイルがあります。これは私の入力ファイルの例です:

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

最初の行の 3 列目の文字列を読み取る必要があります。だから、私はこれを使いました

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

文字位置をパラメーターとして正確な結果を得るにはどうすればよいですか? (12日~18日、21日~28日)

4

2 に答える 2

5

使用するcut -c

詳細については、man ページを確認してください。

また、以下を使用できます。

echo "abcdefghij" | awk '{print substr($0,2,2),substr($0,6,2)}'
bc fg

上記は 2 番目の位置から 2 文字、6 番目の位置から 2 文字です。

あなたの解決策は次のとおりです。

awk 'NR==1 {print substr($0,12,6),substr($0,21,7)}' inputfile.inp

上記のコマンドは、行番号 1 の 12 番目の位置から 6 文字、21 番目の位置から 7 文字を取得します。

于 2012-07-23T07:00:04.917 に答える
0

sedも使用できます。

sed -rn "1 s@.{11}(.{7}).{2}(.{8})@\1\2@p" filename

説明:

  • -n行を印刷しない
  • 置き換える
  • 1最初の行のみ
  • .{11} 11 文字を省略
  • (.{7}) 7 文字を保存 (char 12-18)
  • .{2} 2 文字を省略 (19 ~ 20)
  • (.{8}) 8 文字 (21-28) を節約
  • \1\2文字列を 1 回目と 2 回目の保存で置き換えます
  • p行指定された行を印刷します
于 2012-07-23T08:33:23.977 に答える