내가 탐구하고 SED 기능나오지 명령 삽입 텍스트 - bash는
내가 여기에있는 것은
아이디, 과일 이름과 수량 아래와 같이 간단한 텍스트 파일입니다. 지금은
1,apple
2,banana
이 어떻게 이렇게 될 수 있도록 각각 각 과일의 양
fruit.txt 뒤에 과일의 양을 추가 할.
이 나오지 명령내 TEXTFILE (fruit.txt)의
첫 번째 입력이
1,apple,50
2,banana,40
내가 탐구하고 SED 기능나오지 명령 삽입 텍스트 - bash는
내가 여기에있는 것은
아이디, 과일 이름과 수량 아래와 같이 간단한 텍스트 파일입니다. 지금은
1,apple
2,banana
이 어떻게 이렇게 될 수 있도록 각각 각 과일의 양
fruit.txt 뒤에 과일의 양을 추가 할.
이 나오지 명령내 TEXTFILE (fruit.txt)의
첫 번째 입력이
1,apple,50
2,banana,40
사용처럼 될 것이다 출력은 다음과 같이 나오지 예상 :
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/'
사용 awk :
,하지만 당신은 GNU 당신이 파일을 다시 작성하는이 작업을 수행해야 4.1 awk가없는 경우 :
awk -F, -v OFS="," '/apple/{$3="whatever"}7' file >~/foo.tmp && mv ~/foo.tmp file
도와 주셔서 감사합니다! – user2928337
'7'은 무엇을합니까? 'sed -i'처럼 원본 파일에 다시 쓴다고 가정합니다. 이 번호와 의미의 목록은 어디서 얻을 수 있습니까? – anishsane
@anishsane'7' (0이 아닌 숫자)은 기본 awk 동작을 수행합니다.이 동작은'print'입니다. – Kent
감사를 도와! – user2928337
당신을 환영합니다. 다행 이네. – anubhava
다시 문제를 일으키게되어서 미안하지만, -r, s/등이 무엇인지 설명해 주시겠습니까? 저는 정규 표현식에서 몹시 나빴습니다. 내가 아는 바로는 ** ** ** **/s (사과)는 사과 **에서 시작을 의미하고 ** (, [0-9 *])는 0-9 사이의 임의의 숫자로 시작하고 일치하는 것을 의미합니다. 그것 뒤에 무엇이든지 **. ? $/\ 1,30/part에 대해서는 잘 모르겠다. – user2928337