文字列「リスト」から部分文字列を抽出する

文字列「リスト」から部分文字列を抽出する

ID行を含むファイルがあり、各行から特定の部分文字列を抽出しています。私は見たこれ答え、これは素晴らしいですが、すべての行で実行する方法を知りません。私はそれがその一部でなければならないと思いますxargsが、わかりません。

たとえば、次のようになります。

123400011234
973700021234
2839900031235
827900041234

(明確にするために太字)

欲しいそれぞれ上記の行は次の内容を抽出します。

0001
0002
0003
0004

今私は知っています一つline、最後の8文字のうち最初の4文字を取得するために$line_one使用できます。echo ${line_one: -8:4}しかし、前のコマンドの行があります(たとえばcut -d "|" f1、私の考えでは、関連ファイルがあるコンピュータにはなく、コンピュータにインターネットがないようです)。私が想像するのは、私がこれを実行できる世界です。

cut -d "|" -f1 | xargs echo ${xargs_line: -8:4}

私の出力を取得するには...

可能ですか?それではどうでしょうか?

答え1

完全な作業を完了するには、次のようにしますawk

$ awk -F'|' '{print substr($1,length($1)-7, 4)}' f1

はい

サンプルデータファイルf1:

$ cat f1
123400011234|blah|blah
973700021234|blah|blah
2839900031235|blah|blah
827900041234|blah|blah

このコマンドを実行すると、次の結果が生成されます。

$ awk -F'|' '{print substr($1,length($1)-7, 4)}' f1
0001
0002
0003
0004

答え2

cut -d "|" -f1 | while read line; do echo ${line: -8:4}; done

関連情報