我正在开发一个 bash 脚本并提出了以下奇怪的行为!
$ echo £ |cut -c 1
?
Run Code Online (Sandbox Code Playgroud)
符号£传递给下一个命令,cut其过滤器仅选择一个字符。
当我修改cut命令中的过滤器以选择 2 个字符时,则£通过!
$ echo £ |cut -c 1-2
£
Run Code Online (Sandbox Code Playgroud)
不是一个严重的问题,我在脚本中有一个解决方法,但是为什么在选择£标志时 cut 命令中的过滤器需要 2 个位置而不是 1 个位置?
我有一个空格分隔的字符串,它是由一个命令输出的,我喜欢通过管道传输到cut,-fd ' '用于在空格上进行拆分。我知道我可以-f <n>用来显示字段编号<n>,但是如果我不知道字符串的长度,我可以让它显示最后一个字段吗?
或者我是否需要使用更灵活的文本编辑工具,例如sed或awk?
是否有任何剪切命令可以根据单词进行剪切,例如:
171212 16082784 6264 XXX xxxxxxxx Transaction XXXXX abend ABCD. The task has terminated abnormally because of a program check. 16:08:27
Run Code Online (Sandbox Code Playgroud)
我希望输出为:
171212 16082784 6264 XXX xxxxxxxx Transaction XXXXX abend ABCD.
Run Code Online (Sandbox Code Playgroud)
如何接近?
假设一个名为“file”的文件包含以下行:
foo:bar:baz:qux:quux
one:two:three:four:five:six:seven
alpha:beta:gamma:delta:epsilon:zeta:eta:theta:iota:kappa:lambda:mu
the quick brown fox jumps over the lazy dog
Run Code Online (Sandbox Code Playgroud)
如果我们使用带有这些选项的 cut 命令,我们会得到:
$ cut -d ":" -f 5- file
quux
five:six:seven
epsilon:zeta:eta:theta:iota:kappa:lambda:mu
the quick brown fox jumps over the lazy dog
Run Code Online (Sandbox Code Playgroud)
在最后一行中,没有找到冒号字符,所以通常它不应该占用该行,因为我们从第 5 个字段开始到行尾。
为什么呢 ?
我是编程新手!!
任何人都可以帮助删除:时间戳中的第一个位置::29.06.2019 23:03:17
目前我正在尝试使用 awk/cut 命令来做到这一点,如下所示:
TDS="$(grep 'Logfile started' process.log | awk '{print $3,$4}' | cut -d: -f2)"
echo "$TDS"
29.06.2019 23
Run Code Online (Sandbox Code Playgroud)
输出不是我想要的!我想将其打印为29.06.2019 23:03:17.
在我的文件中mytxt:
field1 field2
------ -------
this are numbers 12345
this letters abc def ghi
Run Code Online (Sandbox Code Playgroud)
假设我想将第一个字段存储在数组中:
i=0
while read line; do
field_one[$i]=$(echo $line | awk '{print $1}')
echo ${field_one[i]}
((i++))
done < mytxt
Run Code Online (Sandbox Code Playgroud)
这会给我this两次输出。
关于如何将它们存储在数组中并获得输出的任何想法:
this are numbers
this letters
Run Code Online (Sandbox Code Playgroud)
我曾尝试更改分隔符、压缩空格和使用sed,但我被卡住了。任何提示将不胜感激。
我的最终目标是将两个字段存储在一个数组中。
我在文件中有以下几行:
Modified folders: html/project1/old/dev/vendor/symfony/yaml/Tests/bla.yml
Modified folders: html/port5/.DS_Store
Modified folders: html/trap/dev8/.DS_Store
Modified folders: html/bla3/test/appl/.DS_Store
Modified folders: html/bla4/pro1/app/bla/Api2.php
Modified folders: html/bla10/dev/appl/language/.DS_Store
Modified folders: html/bla11/dev/appl/language/abc.txt
Run Code Online (Sandbox Code Playgroud)
这基本上是rsync. 我想列出文件的所有行,最多 3 个目录位置,例如
Modified folders: html/project1/old
Modified folders: html/port5
Modified folders: html/trap/dev8
Modified folders: html/bla3/test
Modified folders: html/bla4/pro1
Modified folders: html/bla10/dev
Modified folders: html/bla11/dev
Run Code Online (Sandbox Code Playgroud)
任何人都可以向我提供任何命令或 shell 脚本来做同样的事情吗?
我有这样的 TSV 文件:
abc_1
def_2
ghi_3
jkl_4
mno_5
Run Code Online (Sandbox Code Playgroud)
我想把它分成:
abc
def
ghi
jkl
mno
Run Code Online (Sandbox Code Playgroud)
和
1
2
3
4
5
Run Code Online (Sandbox Code Playgroud)
我怎么能得到那个?
我在我的系统中安装了tlp以防止笔记本电脑过热,我使用此代码来检索当前的 CPU 温度。
tlp-stat -t
Run Code Online (Sandbox Code Playgroud)
上面命令的输出是这样的:
--- TLP 0.7 --------------------------------------------
+++ Temperatures
CPU temp = 47 [°C]
Fan speed = (not available)
Run Code Online (Sandbox Code Playgroud)
你能告诉我如何只检索该输出的整数部分(即 47)。我尝试使用 cut 命令,但无法找到最佳结果。
这是我使用的剪切命令
tlp-stat -t | cut -d= -f2
Run Code Online (Sandbox Code Playgroud)
输出是
--- TLP 0.7 --------------------------------------------
+++ Temperatures
49 [°C]
(not available)
Run Code Online (Sandbox Code Playgroud)
如何优化我的cut命令以仅获取两位整数值?
cut-command ×9
command-line ×7
awk ×2
bash ×2
tr ×2
rsync ×1
scripts ×1
sed ×1
text ×1
text-editor ×1
utf-8 ×1