![쉘 스크립트에서 일치하는 값과 해당 값을 찾는 방법 [닫기]](https://linux55.com/image/122212/%EC%89%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C%20%EC%9D%BC%EC%B9%98%ED%95%98%EB%8A%94%20%EA%B0%92%EA%B3%BC%20%ED%95%B4%EB%8B%B9%20%EA%B0%92%EC%9D%84%20%EC%B0%BE%EB%8A%94%20%EB%B0%A9%EB%B2%95%20%5B%EB%8B%AB%EA%B8%B0%5D.png)
다음 문자열이 있습니다.
"-소유자-날짜2017-10-10-Priority20-Valuexyz-OutputPosition"
무시하고 싶다-우선순위 20그리고- 출력 위치Bash 스크립트에서 이 매개변수를 구문 분석할 때의 옵션입니다. sed/awk/grep을 사용하여 이를 수행하기 위한 팁이 있습니까?
참고 1: 매개변수는 특별한 순서가 없습니다. 참고2: -우선순위는 0~100 사이의 숫자일 수 있습니다. 참고3: -outputLocation. dir_name은 실행될 때마다 변경됩니다.
답변1
사용argparse
매개변수를 쉽게 구문 분석할 수 있습니다.
parser = argparse.ArgumentParser()
parser.add_argument('-owner', action='store_true')
parser.add_argument('-date')
args = parser.parse_args()
print(args.accumulate(args.integers))
이제부터는 실제로 일부 매개변수를 무시하는 것이 쉽지 않습니다.
답변2
방법 1
여기서는 "-priority 20 -outputLocation" 내용을 공백으로 바꿉니다.
#!/bin/bash
for i in -priority 20 -outputLocation
do
sed -i "s/"$i"//g" /tmp/l.txt
done
방법 2
여기서는 값을 억제했습니다.
awk '{$5="";$6="";$NF="";print $0}' l.txt