sed
ASCII 1을 다음으로 바꾸는 명령줄이 있습니다 |
.
sed -e 's/^A/\|/g' file_name
이것은 작동합니다. 그러나 bash 파일의 함수에 넣으면 다음과 같습니다.
func(){
sed -e 's/^A/\|/g'
}
작동하지 않습니다:
func file_name
파일을 표시하는 대신 정지됩니다.
내가 실수했나요? 내 bash가 확실히 로드되도록 새 터미널을 열었습니다.
답변1
이를 입력 매개변수로 처리 해야 합니다 file_name
. 함수의 명령에 마법처럼 적용되는 것이 아닙니다.
func() {
sed -e 's/^A/\|/g' "$1"
}
전달된 첫 번째 매개변수는 에 저장되고 $1
, 두 번째 매개변수는 에 저장되는 $2
식입니다.
이것은 귀하의 버전에서 작동합니다. btw:func < file_name
답변2
실제로는 걸리지 않습니다. 입력을 기다립니다 :-)
당신이 이것을 하든가
func() # replace something in the file, i.e. modify it
{
sed -e 's/^A/\|/g' -i "$1"
}
아니면 이거
func() # output the contents of the file to console after applying sed
{
sed -e 's/^A/\|/g' < "$1"
}
또한 bash/POSIX 쉘은 C가 아닙니다.