명확히하기 위해 나는 번 글로벌 검색을 수행하고 이전에 사용 된 명령을 대체 할 방법을 찾고 있습니다. ^word^replacement^
만 첫 번째 경기를 대체하는 것으로 보입니다.^word^replacement^배쉬의 모든 경기?
set
옵션이 있습니까?
명확히하기 위해 나는 번 글로벌 검색을 수행하고 이전에 사용 된 명령을 대체 할 방법을 찾고 있습니다. ^word^replacement^
만 첫 번째 경기를 대체하는 것으로 보입니다.^word^replacement^배쉬의 모든 경기?
set
옵션이 있습니까?
이 시도 :
$ echo oneone
oneone
$ !!:gs/one/two/ # Repeats last command; substitutes 'one' --> 'two'.
twotwo
불쾌한 방법은 다음과 같이 될 수있다이 문제를 해결 얻을 :
가 L의 교환에 의해 BAABAA
보다는 BLABLA
에코하려는의
$ echo "BLABLA"
BLABLA
$ `echo "!!" | sed 's/L/A/g'`
$(echo "echo "BLABLA" " | sed 's/L/A/g')
BAABAA
$
불행하게도이 기술에서 작동하지 않는 것 함수 또는 별명.
오른쪽 :
여기에 "MYFILE.TXT"라는 이름의 파일에 문자열을 교체 전역하는 방법은 다음과 같습니다. 또한 값 비싼 포크가 생성됩니다. 수천 번의 반복을 포함하는 작업에서는 상당한 시간을 소비하게됩니다. – xizdaqrian
존 Feminella의 내 대답 here을 혼합하면 별칭을하려는 경우이 작업을 수행 할 수 있습니다
$alias dothis='`history -p "!?monkey?:gs/jpg/png/"`'
$ls *.jpg
monkey.jpg
$dothis
monkey.png
을! 이전 명령 만 수행하지만!? string? "string"을 포함하는 가장 최근의 명령과 일치합니다.
그건 전혀 작동하지 않습니다. 원숭이라는 명령이 없었기 때문에 원숭이를 포함하는 내 역사에는 아무 것도 없었습니다. –
수세 10.1에서 테스트합니다. "^ word^replacement ^"는 작동하지 않지만 "^ word^replacement"는 잘 작동합니다. 인스턴스 (instance)에 대한 : 이중 슬래시의 사용은 "글로벌"문자열 교체 의미
$ SENTENCE="1 word, 2 words";echo "${SENTENCE//word/replacement}"
1 replacement, 2 replacements
참고 :
linux-geek:/home/Myworks # ls /etc/ld.so.conf
/etc/ld.so.conf
linux-geek:/home/Myworks # ^ls^cat
cat /etc/ld.so.conf
/usr/X11R6/lib/Xaw3d
/usr/X11R6/lib
/usr/i486-linux-libc5/lib=libc5
/usr/i386-suse-linux/lib
/usr/local/lib
/opt/kde3/lib
/opt/gnome/lib
include /etc/ld.so.conf.d/*.conf
linux-geek:/home/Myworks #
하지만 이전 행의 단어의 * 인스턴스 만 대체합니다 (명령 일 가능성이 있습니다). 'ls/etc/passwd/etc/passwd' 행을'^^'변전소 방법으로'ls/etc/hosts/etc/hosts' 행으로 변경하십시오. –
이 솔루션은 배쉬 하위 문자열 교체를 사용합니다.
이 솔루션은 한 줄로 실행할 수 있습니다.
$ sed -i -e "s/word/replacement/g" myfile.txt
이것은 나를 위해 작동하지 않습니다. 나는 '두 가지'가된다 – finnw
당신은 그것을 정확하게 타이핑 했습니까? 그것은 나를 위해 잘 작동합니다. (나는 GNU bash 버전 3.2.48 (1) -release를 사용하고있다.) –
은 bash의 이전 버전에서 방금 테스트되었고, (unsurprising) 작동하지 않는다. '$ echo $ BASH_VERSION' _ (2.05 _ '$ echo oneone' _ (out : oneone) _ '$ !! : gs/one/two' _ (out : twoone) _ ... '$ echo $ _ '$ echo oneone' _ (out : oneone) _ '$ !! : gs/one/two' _ (out : twotwo) _ (바깥 쪽 : 3.2.25 (1) ... 모든 일에 대한 일반적인 조언 bash? 버전 3 이상 사용하기 – michael