barcforex.txt
3行のテストファイルがあります。
"20200424090011.047Z","New","0232917586","USD",8393000000.0000,"EUR"
"20200424120025.308Z","New","0132910586","INR",8393000000.0000,"USD"
"20200425120025.027Z","New","0132910587","USD",110000000.0000,"INR"
.
最初のフィールド(タイムスタンプ)を抽出し、最後の5文字(〜Z
)を切り取り、出力を次のように表示したいと思います。
"20200424090011"
"20200424120025"
"20200425120025"
私の試みはほぼ成功しました。
awk -F',' '{ print $1 }' barcforex.txt | sed 's/.[0-9]Z//g'
これは私に次のような結果を与えます:
"20200424090011.0"
"20200424120025.3"
"20200425120025.0"
次のような他の試み:
awk -F',' '{ print $1 }' barcforex.txt | sed 's/^.[0-9]+Z$//g'
これ:
awk -F',' '{ print $1 }' barcforex.txt | sed 's/^.[0-9]{3}Z$//g'
同じ出力を提供しました。
"20200424090011.047Z"
"20200424120025.308Z"
"20200424120025.308Z"
タイムスタンプから最後の5文字を正しく削除する方法は?
答え1
これには3つの方法があります。
awk '{print substr($1,2,14)}' barcforex.txt # Print 14 characters of string from position 2
awk -F'[".]' '{print $2}' barcforex.txt # Split line at double quotes and dots; print 2nd field
grep -Po '(?<=^").*?(?=\.)' barcforex.txt # RE to match between first " and first .
一般的に言えばawk
、おそらく不要sed
(またはgrep
)
答え2
$ awk -F'"' '{print int($2)}' file
20200424090011
20200424120025
20200425120025
$ sed 's/"\([^.]*\).*/\1/' file
20200424090011
20200424120025
20200425120025
答え3
これは以下によって行われる。
注文する
awk -F "," '{print substr($1,1,15)substr($1,21,1)}' filename
sed 's/\..*/"/g' filename
python
#!/usr/bin/python
o=open('io.txt','r')
for i in o:
q=i.split(".")[0]
print('{0}"'.format(q))
出力
"20200424090011"
"20200424120025"
"20200425120025"