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
여기에는 세 가지 방법이 있습니다.
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"