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