我想使用 SSH 访问远程机器。但是,我不知道如何找到机器的HostName。我尝试使用该hostname命令,但这仅给出了机器的本地地址,(我认为)在不同的机器上可以相同。
当我尝试ssh name使用命令name返回的主机名时hostname,我收到一条错误消息,指出“主机名无法识别”。
如何找到可用于区分目标机器的完整主机名?
PS:我完全授权使用目标机器。
我有一个由文本和数字组合而成的制表符分隔文件。我想保留每一行,但我只想保留第 5 列中的六位数字(如果存在)。例如:
gene1 NM_033629 598G>A P912 syndrome 1, 192315 syndrome 2, 225750 syndrome 3 610448 score AD hom user 123456 Source
gene2 NM_000459 613G>A V115I syndrome 1 600195 score AD rec user 234567 Source
Run Code Online (Sandbox Code Playgroud)
(以 Syndrome # 为例,这可以是任何文本,因此不是我可以搜索和删除的模式)
我希望输出是:
gene1 NM_033629 598G>A P912 192315 225750 610448 score AD hom user 123456 Source
gene2 NM_000459 613G>A V115I 600195 score AD rec user 234567 Source
Run Code Online (Sandbox Code Playgroud)
我有 4 种方法来提取 6 位数字,但是,我不能
一种。输出它起源的行中的数字
湾 使用一个编辑过的字段成功打印整行。我用来提取数字的选项是:
cat inputfile | cut -f 5 |grep -P …Run Code Online (Sandbox Code Playgroud) 我想将 sourcefile.txt其中包含 10000 行(每天增加)分成 30 个相等的文件。我有调用prog1to 的目录prog30,我想将文件拆分为具有相同文件名的这些目录。例如/prog1/myfile.txt,/prog2/myfile.txt 到 /prog30/myfile.txt.
这是我的 bash 脚本,名为divide.sh在prog目录中运行
#!/bin/bash
programpath=/home/mywebsite/project/a1/
array=/prog1/
totalline=$(wc -l < ./sourcefile.txt)
divide="$(( $totalline / 30 ))"
split --lines=$divide $./prog1/myfile.txt
exit 1
fi
Run Code Online (Sandbox Code Playgroud) 有人可以解释一下下面的awk命令发生了什么吗?如果没有错误,那么为什么notme没有打印,为什么我没有收到语法错误,那么对于右括号...}需要用引号关闭...}'?
$ awk '{print "me "$0 '"notme"} <<<"printme"
me printme
Run Code Online (Sandbox Code Playgroud)
那么我会尝试这个:
$ awk '{print "me "$0 '"\"$(date)"\"} <<<"printme-at "
me printme-at Wed Apr 11 16:41:34 DST 2018
Run Code Online (Sandbox Code Playgroud)
或者
awk '{print '"\"$(date)\""} <<<"run"
Wed Apr 11 16:56:38 DST 2018
Run Code Online (Sandbox Code Playgroud)
正如它所显示的,这意味着我可以使用 shell 命令替换来做任何事情。
这是一个错误吗?或者可能是我找不到的特殊状态。
我有一个pattern具有以下值的变量:
\"something//\\anotherthing'
Run Code Online (Sandbox Code Playgroud)
和一个包含以下内容的文件:
\"something//\\anotherthing'
\"something//\\anotherthing
\"something/\anotherthing'
\"something\anotherthing'
\\"something\/\/\\\\anotherthing'
Run Code Online (Sandbox Code Playgroud)
当我将从文件中读取的一行与使用==运算符的环境中的模式进行比较时,我得到了预期的输出:
patt="$pattern" awk '{print $0, ENVIRON["patt"], ($0 == ENVIRON["patt"]?"YES":"NO") }' OFS="\t" file
\"something//\\anotherthing' \"something//\\anotherthing' YES
\"something//\\anotherthing \"something//\\anotherthing' NO
\"something/\anotherthing' \"something//\\anotherthing' NO
\"something\anotherthing' \"something//\\anotherthing' NO
\\"something\/\/\\\\anotherthing' \"something//\\anotherthing' NO
Run Code Online (Sandbox Code Playgroud)
但是当我对~操作员做同样的事情时,测试永远不会匹配。(我预计YES在第一行,如上所述):
patt="$pattern" awk '{print $0, ENVIRON["patt"], ($0 ~ ENVIRON["patt"]?"YES":"NO") }' OFS="\t" file
\"something//\\anotherthing' \"something//\\anotherthing' NO
\"something//\\anotherthing \"something//\\anotherthing' NO
\"something/\anotherthing' \"something//\\anotherthing' NO
\"something\anotherthing' \"something//\\anotherthing' NO
\\"something\/\/\\\\anotherthing' \"something//\\anotherthing' NO
Run Code Online (Sandbox Code Playgroud)
要通过~比较解决问题,我需要对转义符进行双重转义:
patt="${pattern//\\/\\\\}" awk '{print $0, ENVIRON["patt"], ($0 ~ …Run Code Online (Sandbox Code Playgroud) 我需要将空格转换为分层的编号列表,但发现这难以捉摸。
这就是我所追求的事情:
输入(可见):
Project #1
Subproject
Task
Project #2
Subproject
Task
Task
Run Code Online (Sandbox Code Playgroud)
输入(原始):
\tProject #1
\t\tSubproject
\t\t\tTask
\tProject #2
\t\tSubproject
\t\t\tTask
\t\t\tTask
Run Code Online (Sandbox Code Playgroud)
期望输出:
1: Project #1
1.1: Subproject
1.1.1: Task
2: Project #2
2.1: Subproject
2.1.1: Task
2.1.2: Task
Run Code Online (Sandbox Code Playgroud) 我有一些tar.gz文件。我需要将这些tar.gz文件解压到两个 USB 硬盘上。使用该命令,tar -xvzf我一次只能将其提取tar.gz到一个硬盘。
非常感谢,如果我能被告知如何将tar.gz文件同时提取到两个硬盘。由于我需要迁移的文件总大小约为 4.5TB,这可以帮助我节省大量时间。
我有多个带有以下文本的文件:
20~02~19~05-01-52
2249\\\2249\\\2249\\\2249\\\2249\\\2249\\\2248\\\
Run Code Online (Sandbox Code Playgroud)
我想使用 sed 或其他 Linux 命令来替换\\\换行符。
我有一个号码 -> 12345
我想要以下格式的输出
1+2+3+4+5
Run Code Online (Sandbox Code Playgroud)
echo `cat fl.txt | paste -s -d ''`
Run Code Online (Sandbox Code Playgroud)
只给12345.
但是当我在下面的命令中添加这个 + 时,它给出了相同的12345.
echo `cat fl.txt | paste -s -d '' | tr -s '' '+'`
Run Code Online (Sandbox Code Playgroud) 我正在尝试镜像特定目录的目录和文件结构。但是,我希望镜像文件没有大小。例如,如果我有以下目录树:
original_folder
??? images
? ??? image1.jpg (2 MB)
? ??? image2.jpg (3 MB)
??? videos
? ??? video1.mp4 (300 MB)
? ??? video2.mp4 (400 MB)
Run Code Online (Sandbox Code Playgroud)
我想要以下输出:
mirrored_folder
??? images
? ??? image1.jpg (0 b)
? ??? image2.jpg (0 b)
??? videos
? ??? video1.mp4 (0 b)
? ??? video2.mp4 (0 b)
Run Code Online (Sandbox Code Playgroud)
我尝试在以下命令中使用original_folder:
cd original_folder
find . -name '*' -exec touch ../mirrored_folder/'{}' \;
Run Code Online (Sandbox Code Playgroud)
但是,此命令尝试执行touch ../mirrored_folder/./images/image1.jpg. 请注意将命令弄乱的点。我怎样才能实现我想要做的事情?