我有 input.txt
abcd
abcg
要选择以“a”开头并以“g”结尾的行,我写:
cat input.txt | awk '/^a/' | awk '/g$/{print $0}'
如何组合正则表达式^a
并g$
只能使用一个实例awk
?
我有 input.txt
abcd
abcg
要选择以“a”开头并以“g”结尾的行,我写:
cat input.txt | awk '/^a/' | awk '/g$/{print $0}'
如何组合正则表达式^a
并g$
只能使用一个实例awk
?
这个答案显示了如何处理diff
两个字符串 -使用 diff 命令比较两个字符串?
我尝试:
diff <( printf '%s\n' "tring1" ) <( printf '%s\n' "string2" )
输出是:
1c1
< tring1
---
> string2
这表明两个字符串是不同的。
我想知道两个字符串在哪些字符处不同,或者至少是差异开始的第一个字符。我该怎么做?
这在比较长网址时很重要。
git diff
我根据一行内的diff研究其他答案
我试试
git diff --word-diff --word-diff-regex=. <( printf '%s\n' "tring1" ) <( printf '%s\n' "string2" )
输出是:
diff --git a/dev/fd/63 b/dev/fd/62
index 9234a649..b6ce327a 120000
--- a/dev/fd/63
+++ b/dev/fd/62
@@ -1 +1 @@
pipe:[69160538[-6-]{+8+}]
我不确定我git diff
是否正确应用以及如何解释输出。
在wget --help
我想快速转到--header
解释选项的地方的输出中。
我尝试使用搜索less
。man less
解释:
/pattern
Search forward in the file for the N-th line containing the pattern. N defaults to 1. The pattern is a regular expression, as recognized by the regular
expression library supplied by your system. The search starts at the first line displayed (but see the -a and -j options, which change this).
按照这个建议,我尝试:
wget --help | less /header
但这会导致错误:
/header: No such file or directory
怎么了?
以下命令序列
ch=`echo "b_d" | sed 's/_/\\\\\\\\_/'`
echo $ch
在终端中执行时或通过source
给出输出
b\\_d
当作为 scipt 运行时
sh script.sh
其中脚本内容是:
#!/bin/bash
ch=`echo "b_d" | sed 's/_/\\\\\\\\_/'`
echo $ch
输出是
b\_d
终端的输出是首选。使用shell脚本的解决方案是什么?也接受作为答案的是如何修改的想法
ch=`echo "b_d" | sed 's/_/\\\\\\\\_/'`
为sh
.
我使用 bash shell:
echo $0
bash
program
当我使用参数调试可执行文件时arg1 arg2
,gdb
我执行以下序列
gdb
file ./program
run arg1 arg2
bt
quit
如何从 shell 脚本中的一个命令行执行相同的操作?
bash手册指出:
eval [arg ...]
The args are read and concatenated together into a single com-
mand. This command is then read and executed by the shell, and
its exit status is returned as the value of eval. If there are
no args, or only null arguments, eval returns 0.
我试试
eval `nonsense`
echo $?
结果是0
。
而当我单独执行反引号命令时:
`nonsense`
echo $?
结果是127
。
根据 bash 手册中的内容,我希望在将反引号作为参数时eval
返回。127
nonsense
如何获取参数的退出状态eval
?
以下代码
if [ $a == "apple" ];
then
echo "True"
else
echo "False"
fi
如果( ) 则输出"True"
( )。如果使用通配符,则比较失败:"False"
a="apple"
a="plum"
if [ $a == "appl"* ];
并且如果一个替换为 是固定[
的[[
:
if [[ $a == "appl"* ]];
[
和[[
in if
statements有什么区别?