이런 파일이 있습니다.
IMS00|20140101|Unix|Jan14
IMS01|20140201|Unix|Feb14
IMS02|20140301|Unix|Mar14
IMS03|20140101|Unix|Jan14
IMS04|20140201|Unix|Feb14
내 기준은 열 1의 값이 이면 IMS00
열 4의 값을 Jan14
로 바꾸고, Jan15
열 1의 값이 이면 IMS01
열 4의 값을 Feb14
로 바꿔야 한다는 것입니다 Feb15
.
이것이 어떻게 달성될 수 있습니까?
답변1
귀하의 질문은 매우 명확하지 않습니다. 예를 들어 귀하가 작성한 코드에서는 점으로 IMS00
나중에 호출됩니다 . 또한 대신 IMS.00
열 수를 변경하는 것도 가능해야 합니다 . 어쨌든, 당신은 찾고있을 것입니다4
3
awk 'BEGIN{FS=OFS="|"}$1=="IMS00"{$4="Jan15"}$1=="IMS01"{$4="Feb15"}1' file
이 BEGIN
블록은 맨 처음에 한 번만 실행되며 필드 구분 기호 FS
와 출력 필드 구분 기호를 OFS
로 설정합니다 |
. 결국 모든 것을 인쇄하게 됩니다 1
.
답변2
Perl에서는 다음과 같이 할 수 있습니다.
perl -pe 's/^(IMS00\|.*\|).*/$1Jan15/; s/^(IMS01\|.*\|).*/$1Feb15/;' file
답변3
다음은 Python 솔루션입니다.
#!/usr/bin/env python2
with open('file.txt') as f:
for line in f:
if line.startswith('IMS00'):
print line.replace('Jan14', 'Jan15')
elif line.startswith('IMS01'):
print line.replace('Feb14', 'Feb15')
스크립트는 파일의 각 줄을 읽은 다음 줄이 주어진 문자열로 시작하는지 확인합니다. 그렇다면 줄의 필요한 부분은 대체 문자열로 대체됩니다.