분리 문자를 변경하는 grep 구분자를 변경할

grep을 사용하는 구분자를 변경할 수있는 방법은 무엇입니까?

기본적으로 grep은 \n구분 기호로 사용한다고 생각 합니다.



답변

출력에 대해서만 신경 쓰면 효과가 tr있을 수 있습니다.

che@nok ~ $ grep cpu /proc/cpuinfo | tr '\n' ';'
cpu family      : 6;cpu MHz             : 800.000;cpu cores     : 2;cpuid level : 10;cpu family : 6;cpu MHz : 800.000;cpu cores      : 2;cpuid level : 10;


답변

agrep애리조나 대학교 에서 구분 기호를 설정할 수 있습니다. grep을 대체하는 것은 아닙니다. 다른 알고리즘을 사용하며 (대략 grep, 오류와 일치 할 수 있음) 패턴 구문이 다릅니다. 그러나 편리한 도구입니다.

불행히도 라이센스 문제로 인해 유사한 프로젝트가 여러 개 있었으며 agrep모두 호환되는 것은 아닙니다. 그러나 모든 버전에서 구분 기호를 설정할 수 있다고 생각합니다.


답변

case $# in
0|1|2)  cat >&2 <<EOF
    Usage: $0 delimiterstring pattern files....
    Behaves like grep -pdelimiterstring but on linux
    DOES NOT SUPPORT MOST ARGUMENTS
    unlike grep -p - leaves delimiterstring in output

    NO -p just the delimeterstring
    note: delimiterstring has to work in the sed command where the ${d} is
    if you are going to use @ in the delimeter string, then the @'s
    need to be replaced by someother character

EOF
    exit 0
;;
3)  mode=one ;;
*)  mode=many ;;
esac
d="${1}"
p="${2}"
shift 2
while [ $# -gt 1 ]
do
    sed "s@${d}@\x00@g" "${1}" | grep -z  "${p}" -  | (
        case $mode in
        many) sed -e "s@\x00@${d}@g"  -e "s@^@${1}: @" ;;
        *)    sed -e "s@\x00@${d}@g"  ;;
        esac
    )
    shift
done


답변

grep 전에 0 구분 기호 ( ‘@’)를 줄 바꿈 (\ n)으로 바꾸십시오.

고양이 파일 | tr ‘\ 00’ ‘\ n’| grep “검색 문자열”


답변

어때 ? 어떤 사용?

grep 파일 "search-string"| awk 'BEGIN {RS = "\ n"; ORS = "@"} {print}'

필요에 따라 ‘@’을 설정하십시오.


답변