sudo find / -name "*" | xargs grep -sn --color=auto "-j"
Run Code Online (Sandbox Code Playgroud)
上面的命令返回如下:
grep: invalid option -- 'j'
Usage: grep [OPTION]... PATTERN [FILE]...
Try `grep --help' for more information.
...
Run Code Online (Sandbox Code Playgroud)
如何搜索字符串-j?
好的,这是给定的用户输入:
$ myscript.sh file-name.txt
Run Code Online (Sandbox Code Playgroud)
我想修剪“file-name.txt”以检索bash脚本中的“文件”
#!/bin/bash
FILENAME=$1
# trim text after '-' from user input 'file-name.txt'
# save 'file' back to $1
Run Code Online (Sandbox Code Playgroud)
我最好的猜测是以某种方式混合 sed 和正则表达式,但我不是那些专家:(
有任何想法吗?
我尝试了 muru 的建议以获得更复杂的输入。
给定输入:ABCD-0.1.5-6.1.txt
想要的输出:ABCD
#!/bin/bash
TRIMMED1="${1%-*}"
TRIMMED2="${1%%-*}"
TRIMMED3="${TRIMMED1%-*}"
TRIMMED4="${TRIMMED1%%-*}"
TRIMMED5="${1%-[0-9]*}"
TRIMMED6="${1%%-[0-9]*}"
echo "user input : $1"
echo "TRIMMED1 : $TRIMMED1"
echo "TRIMMED2 : $TRIMMED2"
echo "TRIMMED3 : $TRIMMED3"
echo "TRIMMED4 : $TRIMMED4"
echo "TRIMMED5 : $TRIMMED5"
echo "TRIMMED6 : $TRIMMED6"
Run Code Online (Sandbox Code Playgroud)
结果:
user input : A-B-C-D-0.1.5-6.1.txt
TRIMMED1 : A-B-C-D-0.1.5
TRIMMED2 : A
TRIMMED3 : …Run Code Online (Sandbox Code Playgroud) 有两个终端窗口 - 终端 A 和终端 B。
我输入了一个很长很长的命令来在 A 上做一些事情。
然后我想在 B 上执行相同的命令。
但我不想再次输入它,也不想拖动复制粘贴,因为它很长。
最好(最快)的方法是什么?