如何编写Shell脚本,该脚本将计算并打印/回显执行SED命令时进行了多少更改...
例如:让我们使用SED命令来删除每行匹配特定字符的行。
sed '/@gmail.com/d' F1.txt > RESULT.txt
F1.txt文件包含:
[email protected]
[email protected]
[email protected]
[email protected]
该文件的输出为:
[email protected]
[email protected]
因此,它匹配了两行并删除了这两行。
现在如何在带有Echo的Shell脚本中回显此信息,建议此SED命令修改/删除了多少行?
它应该会发出声音,并显示“打印/回显”,其中两行已删除。您能帮忙制作此Shell脚本吗?
#!/bin/bash
sed '/@gmail.com/d' F1.txt > RESULT.txt
如果可以使用两个命令来完成此操作,则可以执行以下操作:
NUM_DELETIONS=$( grep "@gmail.com" F1.txt | wc -l )
sed '/@gmail.com/d' F1.txt > RESULT.txt
echo "${NUM_DELETIONS} lines were deleted from F1.txt"
如果您想将其编写为快速而肮脏的bash
脚本,则可以考虑这样做:
#!/bin/bash
usage(){
echo "$0 <source_file> <output_file> <removal_text>"
}
SOURCE_FILE="${1}"
OUTPUT_FILE="${2}"
REMOVAL_TEXT="${3}"
[[ ! -r "${SOURCE_FILE}" ]] && usage && exit 1
[[ -z "${REMOVAL_TEXT}" ]] && usage && exit 1
NUM_DELETIONS=$( grep "${REMOVAL_TEXT}" "${SOURCE_FILE}" | wc -l )
sed "/${REMOVAL_TEXT}/d" "${SOURCE_FILE}" > "${OUTPUT_FILE}"
echo "${NUM_DELETIONS} lines were deleted from "${SOURCE_FILE}""
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句