003 계산 (1+1)
2024. 1. 31. 03:12ㆍb정리/아트 오브 셸 원라이너
728x90
반응형
dnf -y install num-utils ruby
echo '1+1' | sed 's/.*/echo $((&))/' | bash
echo '1+1':
문자열 '1+1'을 표준 출력에 출력합니다.
`sed 's/.*/echo $((&))/':
sed 명령어를 사용하여 문자열 '1+1'을 가로안에 있는 내용으로 치환합니다.
s/.*/echo $((&))/에서 .*는 원래 문자열을 나타내며, 이를 echo $((&))로 치환합니다.
$((&))는 sed 명령어에서 현재 패턴을 의미하며, 여기서는 '1+1'이 됩니다.
bash:
최종적으로 bash를 사용하여 앞서 생성된 명령어인 echo $((1+1))를 실행합니다.
echo $((1+1))는 산술 평가를 통해 1+1을 계산하고 결과값을 출력합니다.
echo '1+1' | sed 's/^/puts /' | ruby
echo '1+1':
문자열 '1+1'을 표준 출력에 출력합니다.
sed 's/^/puts /':
sed 명령어를 사용하여 문자열 '1+1'의 시작 부분(^)에 "puts "를 추가합니다.
s/^/puts /에서 ^는 문자열의 시작을 의미하며, 이를 "puts "로 치환합니다.
ruby:
최종적으로 ruby를 사용하여 앞서 생성된 코드인 puts 1+1를 실행합니다.
puts는 Ruby에서 사용되는 출력 함수이며, 1+1은 산술 연산을 나타냅니다.
echo '1+1' | tr + ' ' | numsum -r
echo '1+1':
문자열 '1+1'을 표준 출력에 출력합니다.
tr + ' ':
tr 명령어를 사용하여 문자열 '1+1'에서 '+'를 공백으로 변환합니다.
tr + ' '에서 +를 ' '(공백)으로 치환합니다.
numsum -r:
numsum 명령어를 사용하여 숫자를 합산합니다.
-r 옵션은 결과를 출력할 때 'Result: '를 함께 표시합니다.
따라서 실행 결과로는 "Result: 2"가 터미널에 출력될 것입니다.
이 명령어는 '1+1'을 받아서 공백으로 구분된 숫자로 변환한 다음,
numsum을 사용하여 숫자를 합산하여 결과를 출력하는 것입니다.
echo '1+1' | sed 's/./& /g' | xargs expr
echo '1+1':
문자열 '1+1'을 표준 출력에 출력합니다.
sed 's/./& /g':
sed 명령어를 사용하여 문자열 '1+1'에서 각 문자 사이에 공백을 추가합니다.
s/./& /g에서 .은 문자 하나를 나타내며, 각 문자를 자기 자신과 공백으로 치환합니다.
xargs expr:
xargs 명령어를 사용하여 expr에 전달합니다. xargs는 표준 입력에서 받은 데이터를 명령어
인자로 변환해주는 역할을 합니다.
expr는 산술 표현식을 평가하는 명령어입니다.
echo '1+1' | sed 's/./& /g' | sed 's/^/expr /e'
원래 문자열 출력:
echo '1+1'
출력: 1+1
첫 번째 sed를 사용하여 각 문자 사이에 공백 추가:
echo '1+1' | sed 's/./& /g'
출력: 1 + 1
이전과 마찬가지로 각 문자 뒤에 공백을 추가합니다
두 번째 sed를 사용하여 각 줄의 처음에 "expr " 추가:
echo '1+1' | sed 's/./& /g' | sed 's/^/expr /'
출력: expr 1 + 1
s/^/expr /에서 ^는 문자열의 시작을 의미하며, 각 줄의 처음에 "expr "을 추가합니다.
echo '1+1' | sed 's/./& /g' | sed 's/^/expr /e'
출력: 2
이제 각 줄은 "expr"로 시작하는 문자열로 치환되었으며,
bash에서는 이를 평가하여 결과값 "2"가 출력됩니다.
반응형
'b정리 > 아트 오브 셸 원라이너' 카테고리의 다른 글
006 파일 권한 (0) | 2024.01.31 |
---|---|
005 파일과 디렉터리 조작 (0) | 2024.01.31 |
004 파일에 저장 (0) | 2024.01.31 |
002 명령어 중단 (1) | 2024.01.31 |
001 터미널 사용 (0) | 2024.01.31 |