2016-09-17 2 views
1

에서 나는 몇 가지 문제 기록 **로 표시된 라인 (끝에 -sign이 사람이하지 않은 특별히 있습니다유닉스 쉘 스크립팅 제거 - 파일

job, cost_code, laborcost,materialcost  
202-12-21, 23-94-23, **110.00-**, 120.04  
204-12-21, 23-93-23, 520.00, **120.04-**  
204-12-12, 24-93-23, 155.00, **120.04-** 

파일을 포함하는 다음과 같은 정보를 실제로 파일에 있음).

정규식으로 - 기호를 제거하려고하는데 문제가있는 금액 만 일치시키는 데 문제가 있습니다.

+0

'tr'은 적합하지 않으며, 어디서나'-'를 제거하거나 바꿀 때만 사용할 수 있습니다. – tripleee

답변

0

이 시도는,이 명령은 행의 끝에서 대시를 제거

sed s'/-$//' 
echo "204-12-21, 23-93-23, 520.00, 120.04-" | sed s'/-$//' 
0

당신은 sed를 사용할 수 있습니다

sed -i~ 's/\([0-9]\)-,/\1,/g;s/-$//' input.csv 

첫 번째 표현은 -, 뒤에 자리를 찾아 자리하여 대체하고 콤마; 두 번째 식은 행의 끝에서 대시를 제거합니다.

+0

고마워요. – meso

+0

@meso : thank you = upvote/accept. – choroba

+0

명령이 광고 항목의 마지막에 작동하지 않는 몇 가지 이유 때문에 다른 변형을 시도했지만 여전히 어떤 생각을하지 못하고 있습니까? – meso

0

당신 (GNU이 나오지도)에 대한이 작동 될 수 있습니다

sed -r 's/-(,|$)/\1/g' file 

쉼표 또는 행의 마지막 필드에서 하이픈 앞에 하이픈을 제거합니다.

관련 문제