2013-10-28 9 views
1

내가 탐구하고 SED 기능나오지 명령 삽입 텍스트 - bash는

내가 여기에있는 것은

아이디, 과일 이름과 수량 아래와 같이 간단한 텍스트 파일입니다. 지금은

1,apple 
2,banana 

이 어떻게 이렇게 될 수 있도록 각각 각 과일의 양

fruit.txt 뒤에 과일의 양을 추가 할.

이 나오지 명령

내 TEXTFILE (fruit.txt)의

첫 번째 입력이

1,apple,50 
2,banana,40 

답변

1

사용처럼 될 것이다 출력은 다음과 같이 나오지 예상 :

sed -i -r 's/(apple)(,[0-9]*)?$/\1,10/' 

sed -i -r 's/(apple)(,[0-9]*)?$/\1,20/' 

sed -i -r 's/(apple)(,[0-9]*)?$/\1,30/' 
+1

감사를 도와! – user2928337

+1

당신을 환영합니다. 다행 이네. – anubhava

+0

다시 문제를 일으키게되어서 미안하지만, -r, s/등이 무엇인지 설명해 주시겠습니까? 저는 정규 표현식에서 몹시 나빴습니다. 내가 아는 바로는 ** ** ** **/s (사과)는 사과 **에서 시작을 의미하고 ** (, [0-9 *])는 0-9 사이의 임의의 숫자로 시작하고 일치하는 것을 의미합니다. 그것 뒤에 무엇이든지 **. ? $/\ 1,30/part에 대해서는 잘 모르겠다. – user2928337

1

사용 awk :

,

하지만 당신은 GNU 당신이 파일을 다시 작성하는이 작업을 수행해야 4.1 awk가없는 경우 :

awk -F, -v OFS="," '/apple/{$3="whatever"}7' file >~/foo.tmp && mv ~/foo.tmp file 
+0

도와 주셔서 감사합니다! – user2928337

+0

'7'은 무엇을합니까? 'sed -i'처럼 원본 파일에 다시 쓴다고 가정합니다. 이 번호와 의미의 목록은 어디서 얻을 수 있습니까? – anishsane

+1

@anishsane'7' (0이 아닌 숫자)은 기본 awk 동작을 수행합니다.이 동작은'print'입니다. – Kent